将数组转换为正数指示器

4

假设我们有一个数组:

[-2,4,3,-1,2]

我们如何将这个转换为在python中的正指示器数组,以便我们有
[0,1,1,0,1]

我知道如何在MATLAB中完成这个任务,但不知道如何在Python中进行。


使用 numpy 不完全等同于 Matlab 吗?这个页面认为是这样的:http://wiki.scipy.org/NumPy_for_Matlab_Users - Dan
它返回一个逻辑数组。我认为我应该将逻辑数组转换为 0,1 数组。谢谢。 - user4175155
5个回答

6

考虑到您使用了numpy标签,我猜您希望基于该库的解决方案:

import numpy as np
a = np.array([-2,4,3,-1,2])
positive_indicator = np.int64(a > 0)

您可以使用任何您想要的 dtype 作为结果。因此,np.int8 也可以使用。

2
import numpy as np
a = np.array([-2,4,3,-1,2])
np.where(a>0,1,0)

除非您解释这段代码应该如何工作,否则返回-1。 - jpmc26

1

实际上,有numpy的heaviside函数

import numpy as np
a = np.array([-2,4,3,-1,2])
np.heaviside(a, 0)

array([0., 1., 1., 0., 1.])

请注意,heaviside函数中的第二个参数表示如何映射0。

0
In [188]: L = [-2,4,3,-1,2]

In [189]: [int(i>0) for i in L]
Out[189]: [0, 1, 1, 0, 1]

1
缺乏解释。-1 - jpmc26

0
>>> x = [-2,4,3,-1,2]                                                                                                                                                                                  
>>> map(lambda x: 1 if x > 0 else 0, x)
[0, 1, 1, 0, 1]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接