如何从Numpy中提取列

2024-09-30 22:28:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个numpy数组,它是300行和5列

X[X[:,0]==1,[1,2]]
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-154-de5e74bc1a0b> in <module>()
----> 1 X[X[:,0]==1,[1,2]]

ValueError: shape mismatch: objects cannot be broadcast to a single shape 

如何让这个工作?我想过滤第一列(等于1),但返回第二列和第三列的副本。在


Tags: innumpymostinputipython数组calllast
1条回答
网友
1楼 · 发布于 2024-09-30 22:28:12

分离这两个索引案例是最简单的。首先查看列1,选择适当的行,然后从该数组中选择列1和列2:

>>> a = np.random.randint(0, 2, (3, 5))
>>> a
array([[0, 0, 0, 0, 1],
       [1, 0, 1, 0, 1],
       [0, 0, 1, 1, 0]])

>>> a[a[:,0] == 1][:,[1,2]]
array([[0, 1]])

问题中的代码a[a[:,0] == 1, [1,2]],在语法上看起来相似,但却在做一些不同的事情。在

例如,a[a[:,0] == 0, [1,2]]在{}的情况下,相当于a[[0,2], [1,2]]。这个索引从a中挑选出两个元素:行0、列1的元素和行{}、列2的元素。它不选择数组的行和列。在

相关问题 更多 >