如何在numpy数组的一个轴上循环,返回内部数组而不是值

时间:2019-03-15 15:39:21

标签: python arrays 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循环来做到这一点,但我假设有一种更正确的方法。任何帮助将不胜感激,谢谢。

3 个答案:

答案 0 :(得分:0)

您可以使用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]])

答案 1 :(得分:0)

实际上,当您使用reshape时,它将返回一个列表数组而不是数组。

如果您想获取每个单独的列表,则可以使用

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

答案 2 :(得分:0)

为什么不只是简单地循环遍历在for循环中获得单个行的数组

import numpy as np

a = np.arange(9)
a = a.reshape(3,3)

for val in a:
    print(val)

# [0 1 2]
# [3 4 5]
# [6 7 8]