基于num条件返回nums列表

时间:2017-10-11 07:42:14

标签: python matlab

如果列表中的num大于0.5,我希望得到1,而其他则为0。

例如,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中是否有更短的表达式?

1 个答案:

答案 0 :(得分: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外部的专用包完成的,从而使其性能更好。