关于python:如果满足2个条件,则将所有numpy数组值设置为x

Set all numpy array values to x if 2 conditions met

在numpy数组中,如果元素值不等于yz,我希望将所有值设置为x

我尝试了以下操作,但失败了,出现了错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

1
2
# set all values in my_array to -5 if they do not equal -1 or 45
my_array[my_array != -1 and my_array != 45] = -5


使用操作符&指定要和应用坐标。

1
my_array[(my_array != -1) & (my_array != 45)] = -5


您需要在多种情况下使用()。只需更正您的代码:

1
my_array[(my_array != -1) & (my_array != 45)] = -5

这是可行的,下面是一个例子:

1
2
3
4
5
6
7
8
9
import numpy as np
a = np.random.randint(0, 5, size=(5, 4))
print(a)

array([[3, 0, 3, 2],
       [1, 4, 0, 3],
       [2, 4, 3, 2],
       [3, 4, 1, 4],
       [1, 4, 4, 2]])

现在,让我们应用我们的条件。

1
2
3
4
5
6
7
8
9
a[(a > 3) & (a==4)] = -101

print(a)

array([[   3,    0,    3,    2],
       [   1, -101,    0,    3],
       [   2, -101,    3,    2],
       [   3, -101,    1, -101],
       [   1, -101, -101,    2]])

它实质上改变了这个值。