Numpy条件,但仅在某些指数?

chhkpiq4  于 2023-05-17  发布在  其他
关注(0)|答案(1)|浏览(82)

我有一个数组的形状[10,200,50]。我想替换以下所有值:
1.大于33
1.落在第三轴上的一组指数内:索引=[0,1,15,20,19]
因此,在轴3上具有任何这些索引并且大于33的任何值将被数字22替换。
我知道这很琐碎,但我在搜索正确的术语来找到解决方案时遇到了麻烦。我的直觉是:arr[arr[:,:,indices]==33]]=22,但这不起作用,因为内部数组的形状与外部数组的形状不匹配。

xzv2uavs

xzv2uavs1#

您可以创建一个遮罩,并在满足条件时设置为true。

import numpy as np
data = np.random.randn(10, 200, 50)
threshold = 33
new_value = 34
indices = [0,1,15,20,19]
data[0, 0, 0] = 100
mask = np.zeros(data.shape, dtype=bool)
mask[:, :, indices] = data[:, :, indices] > threshold
data[mask] = new_value
print(data[0, 0 ,0])

相关问题