[解決済み] python numpy.where()はどのように機能するのですか?
2022-12-07 02:39:55
質問
私は
numpy
で遊んでいて、ドキュメントを調べているうちに、ある魔法に出会いました。つまり、私が話しているのは
numpy.where()
:
>>> x = np.arange(9.).reshape(3, 3)
>>> np.where( x > 5 )
(array([2, 2, 2]), array([0, 1, 2]))
のようなものを渡すことができるのは、内部的にどのように実現しているのでしょうか?
x > 5
のようなものをメソッドに渡すことができるのは、内部的にどのように実現されているのでしょうか?と関係しているのでしょうか?
__gt__
と関係があるのでしょうが、詳しい説明を求めています。
どのように解決するのですか?
<ブロッククオートx > 5 のようなものをメソッドに渡すことができるというのは、内部的にはどのように実現されているのでしょうか?
簡単に言うと、「しない」ということです。
numpyの配列に対するあらゆる種類の論理演算は、boolean配列を返します。(すなわち
__gt__
,
__lt__
などはすべて、与えられた条件が真である場合のブーリアン配列を返します)。
例
x = np.arange(9).reshape(3,3)
print x > 5
の収量。
array([[False, False, False],
[False, False, False],
[ True, True, True]], dtype=bool)
のようなものがあるのも、これと同じ理由です。
if x > 5:
が ValueError を発生させるのと同じ理由です。
x
がnumpy配列の場合、Value Errorが発生します。 これはTrue/Falseの値の配列であり、単一の値ではありません。
さらに、numpyの配列はboolean配列でインデックスを付けることができます。例
x[x>5]
は
[6 7 8]
となります。
正直なところ、実際に
numpy.where
が必要なことはほとんどありませんが、これは単にブーリアン配列が
True
. 通常は、単純なブーリアンインデックスで必要なことを行うことができます。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] numpy.where() 詳細・ステップバイステップの解説/例 [終了しました]。
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] PILからopenCVフォーマットへの変換
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] Flaskで非同期タスクを作る
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] virtualenvsはどこに作成するのですか?