假设我有一个像这样的数组:
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]])]
我尝试了列表理解,重塑等操作,但是我无法做到这一点。
答案 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]])]