Python 3.x 如何使用单个索引和一系列索引从numpy数组中删除行
想象一下,我有一个2D NumPy数组X,有100列和100行。那么,如何使用索引提取以下行和列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
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
进行广播。这些规则与添加两个数组时使用的规则相同。