我有一个二维的numpy数组,并且正在使用Python 3.5。我开始学习布尔索引,这非常酷。我可以对我的二维数组arr进行操作。
掩码 = arr > 127
arr[mask] = 0 这个完美地奏效了,但现在我正在尝试改变这个逻辑,使其使用布尔索引。
for x in range(arr.shape[0]):
for y in range(arr.shape[1]):
if arr[x,y] < -10:
arr[x,y] = 0
elif arr[x,y] < 15:
arr[x,y] = arr[x,y] + 5
else:
arr[x,y] = 30
我为我的索引尝试了多个条件运算符,但是出现了以下错误:
ValueError: 布尔索引数组应该只有一维,布尔索引数组应该只有一维。
我尝试了多个版本来尝试让它工作。这里是一个尝试,产生了ValueError。
arr_temp = arr.copy()
mask = arry_temp < -10
mask2 = arry_temp < 15
mask3 = mask ^ mask3
arr[mask] = 0
arr[mask3] = arry[mask3] + 5
arry[~mask2] = 30
我在mask3上收到了错误。我是新手,所以我知道上面的代码不够高效,正在努力解决它。
如果有任何提示,将不胜感激。
arr[arr < -10] = 0
,arr[arr < 15] = arr[arr < 15] + 5
和arr[arr >= 15] = 30
? - user707650mask1 = arr<-10 mask2 = ~mask1 & (arr<15) mask3 = ~(mask1 | mask2)
,然后使用mask1,2,3
来设置0,+5 和 30
的值。 - Divakar