首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从NumPy数组中选择特定的行和列

从NumPy数组中选择特定的行和列
EN

Stack Overflow用户
提问于 2014-04-08 03:52:52
回答 4查看 246.7K关注 0票数 134

我已经疯了,想弄清楚我在这里做了什么蠢事。

我使用的是NumPy,我有特定的行索引和特定的列索引,我想从中选择。以下是我问题的要点:

代码语言:javascript
运行
复制
import numpy as np

a = np.arange(20).reshape((5,4))
# array([[ 0,  1,  2,  3],
#        [ 4,  5,  6,  7],
#        [ 8,  9, 10, 11],
#        [12, 13, 14, 15],
#        [16, 17, 18, 19]])

# If I select certain rows, it works
print a[[0, 1, 3], :]
# array([[ 0,  1,  2,  3],
#        [ 4,  5,  6,  7],
#        [12, 13, 14, 15]])

# If I select certain rows and a single column, it works
print a[[0, 1, 3], 2]
# array([ 2,  6, 14])

# But if I select certain rows AND certain columns, it fails
print a[[0,1,3], [0,2]]
# Traceback (most recent call last):
#   File "<stdin>", line 1, in <module>
# ValueError: shape mismatch: objects cannot be broadcast to a single shape

为什么会发生这种情况?当然,我应该能够选择第一、第二、第四行、第一和第三列?我期待的结果是:

代码语言:javascript
运行
复制
a[[0,1,3], [0,2]] => [[0,  2],
                      [4,  6],
                      [12, 14]]
EN

Stack Overflow用户

发布于 2020-01-25 21:24:29

使用np.ix_是最方便的方法(正如其他人所回答的),但也可以这样做:

代码语言:javascript
运行
复制
>>> rows = [0, 1, 3]
>>> cols = [0, 2]

>>> (a[rows].T)[cols].T

array([[ 0,  2],
       [ 4,  6],
       [12, 14]])
票数 6
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22927181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档