2017-10-11 8 views
1

リスト内のnumが0.5より大きい場合は1を、そうでない場合は0を取得します。num条件に基づいてnumのリストを返します

例えば、aがリストである

Matlabの:

b = (a > 0.5) 

のPython:

b = [1 if x > 0.5 else 0 for x in a] 
b = [int(x > 0.5) for x in a] 

私はPythonでコード化された短い表現があるかどうかを知りたいのですが?

+0

ここで 'a'は行列ですか? –

+0

「numpy」を使用している場合は可能です。これは、MATLAB同等の簡単です。 –

+0

ああ、私はあなたを持っています。ありがとう! @cᴏʟᴅsᴘᴇᴇᴅ – flyingpot

答えて

2

aが行列の場合は、numpy配列を使用することをお勧めします。

>>> import numpy as np 
>>> a = np.array([0.35,0.76,0.22,0.10]) 
>>> a > 0.5 
array([False, True, False, False], dtype=bool) 
>>> (a > 0.5).astype(int) 
array([0, 1, 0, 0]) 

だからa > 0.5がより大きい場合0.5、及びFalse他の場合に番号をTrueを格納するブール値で元のものと同じ寸法を有するアレイを構築:これは基本的にPythonでMATLAB対応物です。

.astype(int)を使用すると、別のタイプ(ブール値以外)に変換することができます(例:int)。

Numpyは任意の次元の配列を扱うことができ、さらに呼び出しはPython以外の専用パッケージによって行われ、パフォーマンスが向上します。

関連する問題