Set all numpy array values to x if 2 conditions met
在numpy数组中,如果元素值不等于
我尝试了以下操作,但失败了,出现了错误:
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]]) |
它实质上改变了这个值。