为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

牧羊人nacy 2022-11-09 16:18:15
假设我有一个像这样的数组:import numpy as npnp.array([[0, 0, 0],          [1, 1, 1]])这里有形状 (2,3) 但它可以是 (n,3)。我想将它转换为表示列的数组列表。期望的输出[array([[0],[1]]), array([[0],[1]]), array([[0],[1]])]我尝试了列表理解、重塑等,但我没有设法到达那里。
查看完整描述

2 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

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


查看完整回答
反对 回复 2022-11-09
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

使用列表推导,您有 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]])]


查看完整回答
反对 回复 2022-11-09
  • 2 回答
  • 0 关注
  • 74 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信