【发布时间】:2017-10-16 01:23:59
【问题描述】:
我想用给定值(例如0)沿给定轴(例如-2)在给定索引(例如0)处替换给定numpy数组(A)中的值, 相当于:
A[:,:,0,:]=0
问题是输入数组 A 可能以 3D 或 4D 或其他形状出现,因此对于 3D 数据我需要
A[:,0,:]=0
如果是 5D:A[:,:,:,0,:]=0
目前我正在使用exec() 来完成这项工作:
slicestr=[':']*numpy.ndim(var)
slicestr[-2]=str(0)
slicestr=','.join(slicestr)
cmd='A[%s]=0' %slicestr
exec(cmd)
return A
我有点担心exec() 的使用可能不是一个很好的方法。我知道numpy.take() 可以给我沿特定轴的特定索引处的列,但要替换值我仍然需要构造切片/索引字符串,这是动态的。所以我想知道是否有任何本机 numpy 方法可以实现这一目标?
谢谢。
【问题讨论】: