2017-10-11 35 views
1

如果列表中的数字大于0.5,我想得到1,否则返回0。基于num条件的返回数字列表

例如,一个是名单

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数组。这基本上是在Python matlab的对应物:

>>> 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所以构建具有相同尺寸和原来的阵列与存储True万一数如果大于0.5,和False否则布尔值。

通过使用.astype(int),您可以将其转换为另一种类型(比布尔值),例如int

Numpy可以处理任意维度的数组,而且这些调用是通过Python之外的专用包完成的,因此可以更好地实现性能。