这是我对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/

10-12 23:15