python - 在二维 Numpy 数组中切片非连续索引

标签 python numpy matrix slice

我有一个矩阵,即 2D numpy 数组,希望能够切出它的非连续部分。例如使用以下矩阵

[[11 12 13 14 15]
 [21 22 23 24 25]
 [31 32 33 34 35]
 [41 42 43 44 45]
 [51 52 53 54 55]]

我希望能够提取,说
[[11 12 14 15]
 [21 22 24 25]
 [51 52 54 55]]

有没有办法做到这一点?
我可以轻松提取连续切片,例如 matrix[0:2,0:3] 将返回
[[11 12 13]
 [21 22 23]

但不确定如何提取非连续。我阅读了关于使用 np.r_[] 的信息,它仅在一维上使用时有效,但在两个维上均无效。

该解决方案需要具有可扩展性,并且必须用于具有许多非连续索引的大型矩阵(我认为将作为列表传递)。

最佳答案

您可以使用链式索引:

arr = np.array([[11, 12, 13, 14, 15],
       [21, 22, 23, 24, 25],
       [31, 32, 33, 34, 35],
       [41, 42, 43, 44, 45],
       [51, 52, 53, 54, 55]])

In [28]: arr[[0,1,4]][:, [0,1,3,4]]                                                                       
Out[28]: 
array([[11, 12, 14, 15],
       [21, 22, 24, 25],
       [51, 52, 54, 55]])

关于python - 在二维 Numpy 数组中切片非连续索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59432235/

相关文章:

python - HTTP请求相当于 `curl --user`参数?

python - 优化 itertools 与分组 DataFrame 和后置过滤器的组合

python - 将 numpy 数组作为行添加到 pandas 中,并以字符串作为索引

python - 用第二个 DF 填充 DF

C++在循环期间将 vector 存储在数组中

r - R Markdown 中的逐矩阵矩阵

python - 计算 Pandas 数据框中的年数

python map减少西里尔文本中的简单字数

python - Python 字典中的反向键(由列表组成)和值

matlab - 用对角矩阵替换矩阵中的每个元素