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

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


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]])]

我尝试了列表理解、重塑等,但我没有设法到达那里。


牧羊人nacy
浏览 78回答 2
2回答

哈士奇WWW

您可以像这样使用 numpy hsplit() 函数:>>> a=np.array([[0, 0, 0],...        [1, 1, 1]])>>> b,c,d = np.hsplit(a,3)>>> barray([[0],       [1]])>>> carray([[0],       [1]])>>> darray([[0],       [1]])使其成为三个数组的单个列表:>>> myList = [*np.hsplit(a,3)]>>> myList[array([[0],       [1]]), array([[0],       [1]]), array([[0],       [1]])]

慕丝7291255

使用列表推导,您有 2 个选项:import numpy as npa = 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]])]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python