Python 如何同时删除numpy数组的一批行?
我正在做一个python项目,但却被困在一个让我困扰了几个小时的地方。我真的需要你的帮助 问题是: 我得到了一个numpy数组X,它的大小是1300000×110,我想同时从数组中删除一批行。要删除的行的索引存储在python列表中。 假设X是数组,lis是列表Python 如何同时删除numpy数组的一批行?,python,arrays,numpy,Python,Arrays,Numpy,我正在做一个python项目,但却被困在一个让我困扰了几个小时的地方。我真的需要你的帮助 问题是: 我得到了一个numpy数组X,它的大小是1300000×110,我想同时从数组中删除一批行。要删除的行的索引存储在python列表中。 假设X是数组,lis是列表 是否有任何numpy函数可以执行此操作或其他智能技巧?有一个numpy函数用于此操作: 比如说, In [91]: arr = np.arange(20).reshape(10,2, order='F'); arr Out[91]:
是否有任何numpy函数可以执行此操作或其他智能技巧?有一个numpy函数用于此操作: 比如说,
In [91]: arr = np.arange(20).reshape(10,2, order='F'); arr
Out[91]:
array([[ 0, 10],
[ 1, 11],
[ 2, 12],
[ 3, 13],
[ 4, 14],
[ 5, 15],
[ 6, 16],
[ 7, 17],
[ 8, 18],
[ 9, 19]])
In [92]: np.delete(arr, [0,3,4,7], axis=0)
Out[92]:
array([[ 1, 11],
[ 2, 12],
[ 5, 15],
[ 6, 16],
[ 8, 18],
[ 9, 19]])
顺便说一句,由于数组很大,所以用于删除行的方法可以很快吗?在您的例子中,np.delete创建一个掩码=np.onesnrows,bool;将删除值设置为False,mask[idx]=False,并返回_数组[mask,;]。换句话说,它使用一个布尔掩码来选择要保留的行。我有很多行要删除,比如说我需要删除第6行、第9行、第100行。。。。。。但是,一旦我使用X=np.deleteX,6,0删除了第6行,用于删除第9行的索引现在变为第8行,这既不方便,也计算速度慢。@fxy Err,您指定了一个索引列表。。。
In [91]: arr = np.arange(20).reshape(10,2, order='F'); arr
Out[91]:
array([[ 0, 10],
[ 1, 11],
[ 2, 12],
[ 3, 13],
[ 4, 14],
[ 5, 15],
[ 6, 16],
[ 7, 17],
[ 8, 18],
[ 9, 19]])
In [92]: np.delete(arr, [0,3,4,7], axis=0)
Out[92]:
array([[ 1, 11],
[ 2, 12],
[ 5, 15],
[ 6, 16],
[ 8, 18],
[ 9, 19]])