【发布时间】:2021-09-08 17:32:18
【问题描述】:
假设我们有一个 (20, 5) 数组。我们可以非常Python地遍历每个行:
import numpy as np
xs = np.array(range(100)).reshape(20, 5)
for x in xs:
print(x)
如果我们想迭代另一个轴(在此示例中,迭代列,但我正在为 ndarray 中的每个可能轴寻找解决方案),它不太直接,我们可以使用 @987654321 中的方法@:
for i in range(xs.shape[-1]):
x = xs[..., i]
print(x)
是否有更直接的方法来迭代另一个轴,例如(伪代码):
for x in xs.iterator(axis=-1):
print(x)
?
【问题讨论】:
-
您可以将该轴移到前面。但我认为索引方法是最好的
-
@hpaulj 我正在寻找一个 n 维数组的解决方案,假设我们想在 4 轴 3 上进行迭代。
-
@basj 转置适用于 n 维数组。请注意,(惰性默认)转置以及直接索引在大数组上效率低下。如果您计划在目标数组上执行许多类似的操作,那么急切的转置可能是一个好主意。
-
为什么不the second answer in the link you shared?
np.rollaxis -
@Basj 根据它创建视图的答案,这意味着没有额外的内存。至少我是这么理解的。但是,文档没有说明,所以我不确定。
标签: python arrays numpy multidimensional-array numpy-ndarray