Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于num条件返回num列表_Python_Matlab - Fatal编程技术网

Python 基于num条件返回num列表

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 >

如果列表中的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
>>> 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代码应该是可读的,它不是一种高尔夫语言