【问题标题】:How to delete a batch of rows of a numpy array simultaneously? [duplicate]如何同时删除一批numpy数组的行? [复制]
【发布时间】:2018-01-07 16:57:25
【问题描述】:

我正在做一个 python 项目,但被困在一个让我困扰数小时的地方。我真的需要你的帮助!!!

问题来了:

我有一个非常大的 numpy 数组 X (1300000 × 110),我想同时从数组中删除一批行。删除行的索引存储在 python 列表中。 假设 X 是数组,lis 是列表。

是否有任何 numpy 函数可以做到这一点或其他一些聪明的技巧?

【问题讨论】:

  • 对了,既然数组很大,那么删除行的方法能不能快点?
  • 在你的情况下 np.delete 创建一个 mask=np.ones(nrows, bool);将删除值设置为 False,mask[idx]=False,并返回 your_array[mask,;]。换句话说,它使用布尔掩码来选择要保留的行。

标签: python arrays numpy


【解决方案1】:

为此有一个 NumPy 函数,np.delete

np.delete(arr, indices_to_be_deleted, axis=0)

例如,

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]])

【讨论】:

  • 我已经尝试过这个功能,但是这个有问题。我有很多要删除的行,比如说我需要删除第 6 行、第 9 行、第 100 行......但是一旦我使用 X=np.delete(X,6,0 ),删除第 9 行的索引现在变成了第 8 行,这样不方便而且计算速度慢。
  • @fxy Err,您指定了索引列表...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 2021-04-21
  • 1970-01-01
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
相关资源
最近更新 更多