[解決済み] Pythonでx[x < 2] = 0は何を意味するのか?
質問
以下のような行があるコードに出会いました。
x[x<2]=0
バリエーションで遊んでみても、この構文が何をするものなのか、まだ行き詰っています。
例を挙げます。
>>> x = [1,2,3,4,5]
>>> x[x<2]
1
>>> x[x<3]
1
>>> x[x>2]
2
>>> x[x<2]=0
>>> x
[0, 2, 3, 4, 5]
どのように解決するのですか?
これは NumPy 配列 . リストでの動作は無駄であり、Python 2に特有のものです(Python 3ではありません)。元のオブジェクトが本当にリストではなく、NumPyの配列(さらに以下を参照)であったかどうかを再確認したいかもしれません。
しかし、あなたのコードでは、xは単純なリストです。
から
x < 2
は偽 すなわち0、したがって
x[x<2]
は
x[0]
x[0]
は変更されます。
逆に
x[x>2]
は
x[True]
または
x[1]
だから
x[1]
は変更されます。
なぜこのようなことが起こるのでしょうか?
比較のルールは
-
2つの文字列や2つの数値型を順序付ける場合、順序付けは期待通りの方法で行われます(文字列の場合は辞書式順序付け、整数の場合は数値式順序付け)。
-
数値型と非数値型を並べた場合、数値型が先になります。
-
どちらも数値型ではない互換性のない2つの型を注文した場合、それらの型名のアルファベット順で並べられます。
つまり、次のような順序になります。
数値 < リスト < 文字列 < タプル
の受理済み回答を参照してください。 Pythonはどのように文字列とintを比較するのですか? .
xがNumPyの配列である場合
のため、この構文はより理にかなっています。
ブーリアン配列のインデックス
. その場合
x < 2
の各要素がブーリアンであるかどうかを表すブーリアンの配列です。
x
の各要素が 2 よりも小さいかどうかを表す boolean の配列です。
x[x < 2] = 0
の要素を選択する。
x
の要素のうち、2 より小さいものを選び、それらのセルを 0 に設定します。
インデックス作成
.
>>> x = np.array([1., -1., -2., 3])
>>> x < 0
array([False, True, True, False], dtype=bool)
>>> x[x < 0] += 20 # All elements < 0 get increased by 20
>>> x
array([ 1., 19., 18., 3.]) # Only elements < 0 are affected
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] PandasでDataFrameの行を反復処理する方法
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Pythonの関数定義における->の意味とは?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] PySparkでデータフレームのカラムをString型からDouble型に変更する方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Python 2 は文字列と int をどのように比較するのですか?なぜリストは数値より大きく、タプルはリストより大きく比較されるのですか?
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] 小数点以下1桁を取得する[重複]。
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Pythonの文字列の前にあるbという接頭辞は何を意味するのですか?
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複