Python以不同的方式遍历多维numpy数组

时间:2018-04-22 13:11:53

标签: python arrays numpy

例如,我有一个这种形式的numpy数组:

A = [["a", "b", "c"], 
     ["d", "e", "f"],
     ["g", "h", "i"]]

现在我想迭代这个数组 首先,我希望输出是这样的列表或numpy数组。所以逐行迭代:

O = ["a", "b", "c", "d", "e", "f", "g", "h", "i"]

然后按列迭代:

O = ["a", "d", "g", "b", "e", "h", "c", "f", "i"]

然后逐行迭代:

O = ["i", "h", "g", "f", "e", "d", "c", "b", "a"]

最后一栏一栏:

O = ["i", "f", "c", "h", "e", "b", "g", "d", "a"]

所以我知道如何使用两个for循环完成所有操作,但是有一种方法可以使用numpy函数和只有一个用于循环或只是numpy函数吗?

1 个答案:

答案 0 :(得分:2)

使用flatten进行numpy并根据需要进行转置

这是微不足道的
>>> import numpy as np
>>> A = np.array([["a", "b", "c"], 
                  ["d", "e", "f"],
                  ["g", "h", "i"]])
>>> A.flatten()
array(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'], dtype='<U1')
>>> A.T.flatten()
array(['a', 'd', 'g', 'b', 'e', 'h', 'c', 'f', 'i'], dtype='<U1')
>>> A.flatten()[::-1]
array(['i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'], dtype='<U1')
>>> A.T.flatten()[::-1]
array(['i', 'f', 'c', 'h', 'e', 'b', 'g', 'd', 'a'], dtype='<U1')