假设我有一个3D数组arr
。我想以这样的方式遍历arr
:每次迭代都沿z-axis
产生一个向量。可以这样做,但解决方案并未推广。如果arr.shape
和必须沿着其获取矢量的轴未知或可变,则似乎没有直接的方法可以做到这一点。谁能提供解决方案?
for line in np.nditer(arr, axis=2):
# Perform operation on line
arr = array(
[[[2, 2, 8, 8],
[6, 2, 1, 5],
[4, 5, 1, 4]],
[[7, 4, 7, 4],
[0, 0, 3, 3],
[7, 6, 8, 0]]]
)
预期输出:
[2 2 8 8]
[6 2 1 5]
[4 5 1 4]
[7 4 7 4]
[0 0 3 3]
[7 6 8 0]
答案 0 :(得分:0)
在numpy
数组中,shape
为您提供有关每个维度中的# dimensions
和# elements
的信息。有了您的代码,我们得到了
print(arr.shape)
# (2,3,4)
# 3-D array
# along x-axis = 2 elements each
# along y-axis = 3 elements each
# along z-axis = 4 elements each
因此,如果我要查看z-axis
和x-axis
的所有y-axis
元素,则看起来像
for xid in range(arr.shape[0]): # for each x-axis
for yid in range(arr.shape[1]): # for each y-axis
print(arr[xid, yid, :]) # All elements in z-axis
答案 1 :(得分:0)
将@hpaulj的建议写成答案。
运动轴似乎是正确的答案。但是apply_along_axis很直观,也很容易使用。