我是编程新手。我在matlab中有代码:
x2(x2>=0)=1;
x2(x2<0)=-1;
%Find values in x2 which are less than 0 and replace them with -1,
%where x2 is an array like
0,000266987932788242
0,000106735120804439
-0,000133516844874253
-0,000534018243439120
我尝试使用代码
在Python中执行此操作if x2>=0:
x2=1
if x2<0:
x2=-1
返回 ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()
我该怎么做才能让所有积极的东西被 1 取代,而 -1 和 STORE 例如, x2 中的所有内容,而不仅仅是打印,以便我可以使用它后来做了其他一些事情。
答案 0 :(得分:1)
你可以使用numpy的能力来索引布尔数组。
import numpy as np
x = np.array([-5.3, -0.4, 0.6, 5.4, 0.0])
not_neg = x >= 0 # creates a boolean array
x[not_neg] = 1 # index over boolean array
x[~not_neg] = -1
结果:
>>> x
array([-1., -1., 1., 1., 1.])
答案 1 :(得分:0)
首先:
x2 = [0.000266987932788242, 0.000106735120804439, -0.000133516844874253, -0.000534018243439120]
print [1 if num >= 0 else num for num in x2]
<强>输出强>
[1, 1, -0.000133516844874253, -0.000534018243439120]
第二
x2 = [-1, 2, -3, 4]
print [-1 if num < 0 else num for num in x2]
<强>输出强>
[0.000266987932788242, 0.000106735120804439, -1, -1]
如果您在一个声明中同时需要这两个
x2 = [0.000266987932788242, 0.000106735120804439, -0.000133516844874253, -0.000534018243439120]
x2 = [-1 if num < 0 else 1 for num in x2]
print x2
<强>输出强>
[1, 1, -1, -1]