我正在寻找一种方法来遍历1D
3维数组中任何维度的纤维(行,列和多维等效项)。
在2D
阵列中,这是相当琐碎的,因为纤维是行和列,因此只需说一句就for row in A
可以完成工作。但是3D
例如对于数组,此表达式遍历2D
切片而不是1D
纤维。
一个有效的解决方案是以下解决方案:
import numpy as np
A = np.arange(27).reshape((3,3,3))
func = np.sum
for fiber_index in np.ndindex(A.shape[:-1]):
print func(A[fiber_index])
但是,我想知道是否有一些东西:
希望能对您有所帮助!
我想您可能正在寻找 numpy.apply_along_axis
In [10]: def my_func(x):
...: return x**2 + x
In [11]: np.apply_along_axis(my_func, 2, A)
Out[11]:
array([[[ 0, 2, 6],
[ 12, 20, 30],
[ 42, 56, 72]],
[[ 90, 110, 132],
[156, 182, 210],
[240, 272, 306]],
[[342, 380, 420],
[462, 506, 552],
[600, 650, 702]]])
尽管许多NumPy函数(包括sum
)都有自己的axis
参数来指定要使用的轴:
In [12]: np.sum(A, axis=2)
Out[12]:
array([[ 3, 12, 21],
[30, 39, 48],
[57, 66, 75]])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句