这是我对numpy的首次平凡使用,而且我在某个地方遇到了一些麻烦。
因此,我有一个colors
,一个(xsize + 2, ysize + 2, 3)
ndarray,和一个newlife
,一个(xsize + 2, ysize + 2)
布尔值ndarray。我想在所有newlife
为true的位置的颜色中的所有三个值中添加-5到5之间的随机值。换句话说,newlife
将2D向量映射到是否要向该位置的colors
中的颜色添加随机值。
我已经试过一百万种形式:
colors[np.nonzero(newlife)] += (np.random.random_sample((xsize + 2,ysize + 2, 3)) * 10 - 5)
但我不断得到像
ValueError: operands could not be broadcast together with shapes (589,3) (130,42,3) (589,3)
我该怎么做呢?
最佳答案
我认为这可以满足您的需求:
# example data
colors = np.random.randint(0, 100, (5,4,3))
newlife = np.random.randint(0, 2, (5,4), bool)
# create values to add, then mask with newlife
to_add = np.random.randint(-5,6, (5,4,3))
to_add[~newlife] = 0
# modify in place
colors += to_add
关于python - 在2D阵列代表的位置更改3D阵列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47483590/