首页 > 解决方案 > 如何遍历numpy数组的一个轴,返回内部数组而不是值

问题描述

我有几个数据数组,收集到一个数组中。我想循环它,并对每个内部数组进行操作。在 Numpy 中执行此操作的正确方法是什么

import numpy as np

a = np.arange(9)
a = a.reshape(3,3)
for val in np.nditer(a):
    print(val)

这给出了:

0
1
2
3
4
5
6
7
8

但我想要的是(类似于):

array([0 1 2])
array([3 4 5])
array([6 7 8])

我一直在看这个页面:https ://docs.scipy.org/doc/numpy-1.15.0/reference/arrays.nditer.html但到目前为止还没有找到答案。我也知道我可以用一个普通的 for 循环来做到这一点,但我假设有一个更正确的方法。任何帮助将不胜感激,谢谢。

标签: pythonarraysnumpy

解决方案


您可以使用apply_along_axis,但这取决于您的最终目标/输出是什么。这是一个显示这一点的简单示例。

a

array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

np.apply_along_axis(lambda x: x + 1, 0, a)

array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

推荐阅读