我有一个 3D numpy 数组。我想通过在沿轴的连续 2d 切片上执行函数并将生成的切片堆叠在一起来形成一个新的 3d 数组。显然有很多方法可以做到这一点;我想以最简洁的方式做到这一点。我认为这是可能的numpy.vectorize
,但这似乎产生了一个迭代数组中每个值的函数,而不是通过沿第一个轴移动获取的 2D 切片。
基本上,我想要看起来像这样的代码:
new3dmat = np.vectorize(func2dmat)(my3dmat)
并完成与此相同的事情:
new3dmat = np.empty_like(my3dmat)
for i in range(my3dmat.shape[0]):
new3dmat[i] = func2dmat(my3dmat[i])
我怎样才能做到这一点?
恐怕像下面这样的东西是简洁和性能之间的最佳折衷方案。不幸的是,apply_along_axis 不采用多个轴。
new3dmat = np.array([func2dmat(slice) for slice in my3dmat])
就额外分配等而言,它并不理想,但除非 .shape[0] 相对于 .size 很大,否则额外的开销应该是最小的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)