Python 基于num条件返回num列表
如果列表中的num大于0.5,我希望得到1,否则得到0 例如,a是一个列表 Matlab:Python 基于num条件返回num列表,python,matlab,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编写的较短表达式 如果a是矩阵,最好使用numpy数组。这基本上是Python中的matlab对应项: >>> import numpy as np >
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编写的较短表达式 如果
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
构造了一个与原始数组具有相同维数的数组,如果数值大于0.5
,则布尔值存储True
,否则False
通过使用.astype(int)
可以将其转换为另一种类型(而不是布尔值),例如int
Numpy可以处理任意维度的数组,而且调用是由Python之外的专用包完成的,这使得它的性能更好。
a
是一个矩阵吗?是的,如果使用Numpy
。它和matlab等价物一样简单。哦,我明白了。谢谢@Cᴏʟᴅsᴘᴇᴇᴅ<代码>地图(lambda x:int(x>0.5),x)这会让你觉得你现在拥有的东西不够短吗?Python代码应该是可读的,它不是一种高尔夫语言