Python 3.x 如何使用单个索引和一系列索引从numpy数组中删除行

Python 3.x 如何使用单个索引和一系列索引从numpy数组中删除行,python-3.x,numpy,Python 3.x,Numpy,想象一下,我有一个2D NumPy数组X,有100列和100行。那么,如何使用索引提取以下行和列 rows= 1, 5, 15, 16 to 35, 45, 55 to 75 columns = 1, 2, 10 to 30, 42, 50 我知道在MATLAB中,我们可以使用 X([1,5,15,16:35,45,55:75],[1,2,10:30,42,50]). 我们如何在Python中做到这一点?您可以使用np.r\: rows = np.r_[1, 5, 15, 16:35, 4

想象一下,我有一个2D NumPy数组X,有100列和100行。那么,如何使用索引提取以下行和列

rows= 1, 5, 15, 16 to 35, 45, 55 to 75
columns = 1, 2, 10 to 30, 42, 50
我知道在MATLAB中,我们可以使用

X([1,5,15,16:35,45,55:75],[1,2,10:30,42,50]). 

我们如何在Python中做到这一点?

您可以使用
np.r\

rows = np.r_[1, 5, 15, 16:35, 45, 55:75]
cols = np.r_[1, 2, 10:30, 42, 50]

X[rows,cols]

注意,在Python中,
16:35
通常不包括
35
。如果还需要行
35
,您可能需要执行
16:36

MATLAB是否提供了一个值块?一组行和一组列
numpy
处理块与
sub2ind
的情况不同。是的,正如我在问题中提到的,我们可以使用X([idxR],[idxC]),从MATLAB中的数组X中同时提取一组行(比如索引,idxR)和一组列(idxC)。使用
np.ix(列表1,列表2)
查看为块编制索引所需的数组类型。要理解
numpy中的
arr[idx1,idx2]
,您必须了解
idx1
如何使用
idx2
进行广播。这些规则与添加两个数组时使用的规则相同。