-
Pythonでビット単位のANDを使ってすべてのペアのXOR合計を効率的に求めるプログラム
問題の概要2つの配列 arr1 と arr2 が与えられているとします。ここで「リストのXOR合計」とは、リスト内の全要素をビット単位XOR(排他的論理和)で結合した値のことを指します。リストに要素が1つしかない場合、そのXOR合計はその要素自体になります。次に、0 <= i < len(arr1) および 0 <= j < len(arr2) を満たすすべてのインデックスペア (i, j) について、arr1[i] AND arr2[j](ビット単位AND)の結果を要素として持つリストを考えます。この記事では、そのリスト全体のXOR合計を求める方法を解説します。具体例
-
Pythonで制約付きの建物の最大高さを求めるプログラム
問題の概要整数 n と制約リスト restrictions が与えられたとします。私たちは都市に n 棟の新しい建物を一列に建てようとしていますが、高さに関するいくつかの制限があります。建物には左から順に 1 から n までの番号が付けられており、各制約は restrictions[i] = (id_i, max_height_i) の形式で表され、「id_i 番の建物の高さは max_height_i 以下でなければならない」ことを意味します。建物の高さに関する都市の規則は以下のとおりです。各建物の高さは 0 以上でなければなりません。1 番の建物(最初の建物)の高さは必ず 0 です。隣接す
-
Pythonでクエリから最も近い部屋を見つける効率的なアルゴリズム
問題概要roomsという配列があるとします。rooms[i]はペア[roomId_i, size_i]を含み、roomId_iは部屋のID、size_iはその部屋のサイズを表します。すべての部屋番号は一意(重複なし)です。さらに、queriesという別の配列も与えられます。queries[j]はペア[preferred_j, minSize_j]を含みます。j番目のクエリに対する答えは、次の条件を満たす部屋のIDです。部屋のサイズがminSize_j以上であること|id − preferred_j| が最小となること絶対差が同点になった場合は、IDが最も小さい部屋を採用します。条件を満たす部屋
-
Pythonで各クエリを含む最小区間のサイズを効率的に求めるプログラム
問題概要 区間のリスト intervals が与えられます。intervals[i] はペア (left_i, right_i) で表され、i 番目の区間が left_i で始まり right_i で終わることを意味します(両端を含みます)。同時に、queries という別の配列も与えられます。 j 番目のクエリに対する答えは、「left_i ≤ queries[j] ≤ right_i」を満たす区間の中で最もサイズ(長さ)が小さい区間のサイズです。条件を満たす区間が存在しない場合は -1 を返します。すべてのクエリへの回答を配列として求めてください。 具体例 たとえば、入力が interv
-
Pythonで有向グラフにおける最大の色の値を見つけるプログラム
この問題では、n個の色付きノードとm個の異なるエッジから構成される有向グラフが与えられます。ノードには0からn-1までの番号が付けられています。小文字アルファベットのみで構成された文字列colがあり、col[i]はグラフ内のi番目のノード(0インデックス)の色を表します。さらに、edges[j] = (u, v)という形式のエッジリストが与えられ、ノードuからノードvへ向かう有向エッジが存在することを示します。 グラフにおける「有効なパス」とは、ノードの系列 x₁ から xₖ までの並びであり、隣接する任意の xᵢ と xᵢ₊₁ の間に、xᵢ から xᵢ₊₁ へ向かう有向エッジが存在するものを
-
AngularJSのforEach()関数とは?使い方とサンプルコードをわかりやすく解説
AngularJSのforEach()関数は、イテレーターオブジェクトを使って、アイテムのコレクションやオブジェクト、配列を順番に処理(反復処理)するためのメソッドです。iterator関数は、iteratorオブジェクト(value, key, obj)を引数として呼び出されます。それぞれの引数の意味は以下の通りです。value:オブジェクトのプロパティ値、または配列の要素を表しますkey:オブジェクトのプロパティキー、または配列要素のインデックスを指定しますobj:オブジェクト全体を表しますなお、forEach()関数は継承されたプロパティについては反復処理を行わない点に注意してください。
-
【AngularJS】isUndefined()メソッドの使い方|値が未定義かどうかを判定する
AngularJSのisUndefined()メソッドとはAngularJSのisUndefined()メソッドは、指定した参照(変数やオブジェクトなど)が未定義(undefined)であるかどうかを判定するためのユーティリティ関数です。引数に渡された値がundefinedであればtrueを返し、値が定義されている場合はfalseを返します。なお、このメソッドはnullを未定義とはみなさない点に注意してください。nullを渡した場合はfalseが返されます。また、逆の判定を行うangular.isDefined()メソッドも用意されており、両者は常に反対の結果を返します。構文angular.i
-
matplotlibのax.get_ylim()メソッドの使い方|Y軸の表示範囲を取得する手順を解説
matplotlibのax.get_ylim()メソッドを使うと、グラフのY軸の表示範囲(下限値と上限値)を簡単に取得できます。この記事では、実際のコード例を交えながら、その使い方をステップごとに解説します。実装手順図のサイズを設定し、サブプロット間および周囲のパディング(余白)を調整します。新しい図(figure)を作成するか、既存の図をアクティブにします。サブプロット構成の一部として、図に「ax」(Axesオブジェクト)を追加します。numpyを使ってランダムなデータポイントを生成します。plot()メソッドを使ってyデータをプロットします。ax.get_ylim()メソッドでY軸の範囲を
-
Python・Matplotlibでプロファイルヒストグラムをプロットする方法
プロファイルヒストグラムとは、各ビンにそのビンに含まれるデータの平均値を格納するグラフのことです。大量のデータから傾向を読み取りたい場合に非常に有効です。Pythonでプロファイルヒストグラムを描画するには、Seabornライブラリのregplotメソッドを利用するのが最も簡単です。 実装の手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 NumPyを使って x と y のデータポイントを生成します。 seaborn.regplot を使ってデータ点と線形回帰モデルのフィットをプロットします。パラメータ x_bins を指定すると、x変数が離散的なビンに自
-
画像を引き伸ばさずにMatplotlibのimshowでスケールを変更する方法
Matplotlibのimshowで画像を引き伸ばすことなくスケール(縦横比)を変更したい場合、extentパラメータとaspectパラメータを組み合わせて使うことで実現できます。本記事では、その具体的な手順をサンプルコード付きで解説します。 手順 図(figure)のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 4×4次元のランダムなデータポイントを作成します。 imshow()を使って、データを2次元のラスター画像として表示します。 extentパラメータを使用して、画像バッファのピクセル座標をデータ空間の座標系へマッピングします。これにより、軸の範囲を自由
-
【Python】Matplotlibでテキストサイズを自動調整する方法
PythonのMatplotlibでテキストサイズを自動的に調整するには、tight layout(タイトレイアウト)を有効にし、X軸の目盛りラベルを回転させて表示するのが効果的です。これにより、長いラベル同士の重なりを防ぎつつ、図の余白も自動的に最適化できます。 実装の手順 図のサイズを設定し、サブプロット間および周囲のパディングを調整します。 0〜9の範囲(計10個)のデータポイントをプロットします。 labels(ラベル)のリストを作成します。 X軸にticks(目盛り)とlabels(ラベル)を30度回転させて配置します。 show()メソッドを使用して図を表示します。 サンプルコ
-
Seabornで同じグラフに2系列のバイオリンプロットを描く方法
データの分布を比較する際、バイオリンプロット(violin plot)は箱ひげ図よりも詳細な形状情報を視覚化できる便利な手法です。Seabornを使えば、hueパラメータを指定するだけで、同じグラフ上に2つのカテゴリ系列のバイオリンプロットを並べて描画できます。ここでは、実際のコード例とともに、その手順をわかりやすく解説します。実装の手順図のサイズを設定し、サブプロット間および周囲の余白を調整します。オンラインリポジトリからサンプルデータセットを読み込みます(インターネット接続が必要です)。violinplot() メソッドを使用してバイオリンプロットを作成します。このとき hue パラメータ
-
Matplotlibでモザイクプロットを作成する方法を徹底解説
モザイクプロットは、分割表(クロス集計表)のデータを視覚的に表現するのに便利なグラフです。PythonのMatplotlibとstatsmodelsを組み合わせることで、簡単にモザイクプロットを作成できます。この記事では、具体的な手順をサンプルコード付きで解説します。 モザイクプロット作成の手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 statsmodels パッケージをインストールします(pip install statsmodels)。モザイクプロットの作成にはこのパッケージが必要です。statsmodelsは、記述統計や統計モデルの推定・推論など
-
Matplotlibでk-NN決定境界を可視化する方法
本記事では、PythonのMatplotlibとscikit-learnを使って、k-NN(k近傍法)の決定境界をグラフ化する方法を解説します。定番のアイリス(iris)データセットを例に、3クラス分類の判断領域を視覚的に表現する手順を、サンプルコード付きでわかりやすく紹介します。 実装の手順 k-NNの決定境界を描くには、以下のステップに沿ってコードを組み立てます。 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 近傍数を表す変数 n_neighbors を初期化します。 アイリス(iris)データセット(分類用)を読み込みます。 x と y のデータポイン
-
Matplotlibグラフの左下に原点(0,0)を表示する方法
Matplotlibで作成したグラフの左下に原点(0, 0)を表示するには、xlim()メソッドとylim()メソッドを使用します。これらのメソッドでx軸・y軸それぞれの表示範囲の最小値を0に設定することで、原点がグラフの左下隅に収まるようになります。手順図のサイズを設定し、サブプロット間および周囲の余白を調整します。xとyのデータポイントのリストを作成します。xとyのデータポイントをプロットします。xlim()とylim()を使って、x軸・y軸の表示範囲を設定します。図を表示するには、show()メソッドを使用します。サンプルコードimport numpy as np import matp
-
Matplotlibで軸の範囲を設定しながら余白(パディング)を保持する方法
Matplotlibで軸の表示範囲(リミット)を設定した際に、グラフ周辺の余白(パディング)を保ちたい場合は、タイトレイアウト(tight layout)の自動適用を避ける、すなわち plt.rcParams[figure.autolayout] = False を設定するのが有効です。autolayoutが有効になっていると、図のサイズに合わせてレイアウトが自動調整され、意図した余白が失われることがあります。 手順 図のサイズを設定し、サブプロット間およびその周囲の余白を調整します。 NumPyを使用して、x および y のデータポイントを作成します。 plot() メソッドを使って、x
-
Python matplotlibでリストのデータから棒グラフをプロットする方法
Pythonのmatplotlibライブラリを使えば、リストに格納されたデータポイントから簡単に棒グラフ(バーチャート)を作成できます。この記事では、基本的な手順とサンプルコードをわかりやすく解説します。 棒グラフをプロットする手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 データポイントのリストを作成します。 plt.bar() 関数を使って、データから棒グラフを描画します。 show() メソッドを呼び出して、図を画面に表示します。 サンプルコード from matplotlib import pyplot as plt # 図のサイズを設定 p
-
matplotlibでタプルのリストから3Dサーフェスをプロットする方法
matplotlibでタプルのリストから3Dサーフェスをプロットするには、以下の手順に従います。手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。タプルのリストを作成します。タプルのリストから x、y、z の各データポイントを取り出します。座標ベクトルから座標行列を生成します(np.meshgrid を使用)。サーフェスプロット用の h のデータポイントを計算します。新しい図を作成するか、既存の図をアクティブにします。図から3D投影の現在の軸を取得します。サーフェスプロットを作成します。図を表示するには plt.show() メソッドを使用します。サンプルコード
-
Matplotlibで数式を使って3D平面をプロットする方法
Pythonの可視化ライブラリMatplotlibを使えば、数学的な方程式から平面を簡単に3Dプロットできます。この記事では、NumPyと組み合わせて平面の方程式を描画する手順を、サンプルコード付きでわかりやすく解説します。 実装の手順 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。 NumPyを使って x と y のデータ点を作成します。 x と y をもとに、平面の方程式 (eq) を計算します。 新しい図を作成するか、既存の図をアクティブにします。 projection=3d を指定して現在の軸(Axes)を取得します。 x、y、eq のデータ点を使って
-
mplot3d(matplotlib + Python)で選択したオブジェクトのプロパティを取得する方法
matplotlibの3Dプロット(mplot3d)では、pick_eventを利用することで、プロット上でクリック・選択したオブジェクトのプロパティ(座標など)を簡単に取得できます。以下に具体的な手順とコード例を紹介します。実装手順図のサイズを設定し、サブプロット間および周囲の余白を調整します。新しい図を作成するか、既存の図をアクティブにします。サブプロット構成の一部として、図に「ax」(3D軸)を追加します。ランダムなデータポイントを使って散布図を作成します。関数*pick_event_method*をイベント*pick_event*にバインドします。イベント発生時に、該当ポイントの x、