我有一个3D numpy数组。
我可以使用简单的索引来修改任意元素
D[:,:,0]=myval
D[:,:10,1]=list(range(10))
有时我需要在给定的索引处更改元素,并且未预先确定索引所指的轴。 我想通过更改变量来捕捉以下两种情况
D[:,:10,1]=list(range(10)) ->axis 1
D[:10,:,1]=list(range(10)) ->axis 0
类似的东西:
f(D,axis=0/1,index=1,newval)
答案 0 :(得分:2)
我将对由辅助对象np.s_
准备的切片对象使用索引元组。如果axis
为0或1,则具有将list(range(10))
分配给D[:10, :, 1]
或D[:, :10, 1]
的效果。
idx = [np.s_[:], np.s_[:], 1]
idx[axis] = np.s_[:10]
D[tuple(idx)] = list(range(10))