如果列表中的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中是否有更短的表达式?
答案 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外部的专用包完成的,从而使其性能更好。