Python 有没有办法用另一个数组修改一个数组?

Python 有没有办法用另一个数组修改一个数组?,python,numpy,Python,Numpy,我试图修改numpy数组的一个维度-使用另一个数组。然而,除非我使用for循环,否则我会得到非常不直观的结果 state = np.zeros((7, 7, 1)) state2 = np.zeros((7, 7, 1)) sample = np.array([ 1, 2, 0, 1, 2, 1, 0]) b = np.ones((7, 1)) time_index = 0 state[np.arange(state.shape[0]), time_index + sample[:

我试图修改numpy数组的一个维度-使用另一个数组。然而,除非我使用for循环,否则我会得到非常不直观的结果

state = np.zeros((7, 7, 1))
state2 = np.zeros((7, 7, 1))
sample = np.array([ 1,  2,  0,  1,  2,  1,  0])
b = np.ones((7, 1))
time_index = 0

state[np.arange(state.shape[0]), time_index + sample[:, np.newaxis], 0] += b
for i, s in enumerate(sample):
    state2[i, time_index + s, 0] += b[i]

我期望
np.array_equal(state,state2)=True
,但是
state
似乎没有达到我期望的效果。我如何以矢量化的方式重新创建
state2

你在这里想做什么,你在期望
np.array_equal(state,state2)==True的同时修改
state2
是什么意思。也就是说,通过修改
state
的矢量化代码,那么为什么不
state2[np.arange(state2.shape[0])、time\u index+sample[:,np.newaxis],0]+=b
?跳过
[:,np.newaxis]
,并使用展平的
b
b.ravel()
。这将鼓励您发布自己的答案,如果需要的话,希望能对研究做出一些解释。