给定(n,3)数组如何获取3(n,1)数组的列表

时间:2020-05-06 17:31:12

标签: python arrays numpy

假设我有一个像这样的数组:

import numpy as np

np.array([[0, 0, 0],
          [1, 1, 1]])

这里的形状为(2,3),但可以为(n,3)。我想将其转换为代表列的数组列表。

所需的输出

[array([[0],[1]]), array([[0],[1]]), array([[0],[1]])]

我尝试了列表理解,重塑等操作,但是我无法做到这一点。

2 个答案:

答案 0 :(得分:2)

您可以像这样使用numpy hsplit()函数:

>>> a=np.array([[0, 0, 0],
...        [1, 1, 1]])

>>> b,c,d = np.hsplit(a,3)
>>> b
array([[0],
       [1]])
>>> c
array([[0],
       [1]])
>>> d
array([[0],
       [1]])

使其成为三个数组的单个列表:

>>> myList = [*np.hsplit(a,3)]
>>> myList
[array([[0],
       [1]]), array([[0],
       [1]]), array([[0],
       [1]])]

答案 1 :(得分:1)

使用列表推导,您有2个选择:

import numpy as np

a = np.array([[0, 0, 0],
              [1, 1, 1]])
[c for c in a.T]
[array([0, 1]), array([0, 1]), array([0, 1])]

[a[:,i] for i in range(a.shape[1])]
[array([0, 1]), array([0, 1]), array([0, 1])]

#or as hpaulj suggested in the comment
[a[:,[i]] for i in range(a.shape[1])]
[array([[0],[1]]),
 array([[0],[1]]),
 array([[0],[1]])]