我希望能够替换给定numpy数组(A
)中给定索引(例如0
)沿着给定轴(例如-2
)的值为给定值(例如0
),同样地:
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方法可以实现这一点?
谢谢。
Ellipsis
对象在 2.x 版本中也存在,但是...
语法无效,至少在我使用的版本(2.7.10)上是这样。 - cs95python=2.7.10
和numpy=1.12.0
的 conda 环境中测试并工作,也在python=2.6.9
和numpy=1.9.2
中工作。 - Jason...
就是不起作用 :-( - cs95