Python:优化删除在numpy数组中未对齐的元素

罗文迪什


我正在使用numpy 1.6.2python 2.7处理非常大的矩阵给定一个N x M矩阵A和一个映射B,在这里可以为每一行找到要删除的元素的索引。这是一个例子:

A =

   26   55   29   30
   31   65   34   35
   36   75   39   40
   41   85   44   45
   46   95   49   50

B =

     2
     0
     1
     3
     2

结果将是:

A =

   26   55   30
   65   34   35
   36   39   40
   41   85   44
   46   95   50

实际上,为了得到这个,我创建了一个像这样的循环:

for i in xrange(size(B)):
  A[i,:] = concatenate(A[i,0:B[i]],A[i,B[i]+1:])

但这确实很慢。有没有更快的方法来删除我需要的元素?

谢谢你们!

亚历克斯·赖利

您可以A为此创建一个蒙版

>>> mask = np.arange(4) != np.vstack(B)
>>> mask
array([[ True,  True, False,  True],
       [False,  True,  True,  True],
       [ True, False,  True,  True],
       [ True,  True,  True, False],
       [ True,  True, False,  True]], dtype=bool)

然后使用它从中过滤掉不需要的(False)值A,重新整形,然后重新绑定到变量名A

>>> A = A[mask].reshape(5, 3)
>>> A
array([[26, 55, 30],
       [65, 34, 35],
       [36, 39, 40],
       [41, 85, 44],
       [46, 95, 50]])

这应该比使用更快,concatenate因为它避免了在Pythonfor循环的每次迭代中复制数组

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:优化删除在numpy数组中未对齐的元素

来自分类Dev

在Python / Numpy中优化数组元素移位

来自分类Dev

在numpy的4维矩阵中插入未对齐元素

来自分类Dev

从numpy数组中删除元素的最佳算法

来自分类Dev

从 numpy 数组中删除小于 1 的元素

来自分类Dev

从numpy数组中删除一些数组元素

来自分类Dev

在Python中从数组中删除空元素

来自分类Dev

在python中删除numpy数组中的行

来自分类Dev

有效地将未对齐元素插入numpy数组

来自分类Dev

有效地将未对齐的元素插入numpy数组

来自分类Dev

从 numpy 数组中删除特定元素 [以前] 从 numpy 数组中按数据类型选择元素

来自分类Dev

NumPy数组元素未更新

来自分类Dev

在 Python 中对 numpy 数组的元素求和

来自分类Dev

从numpy数组中删除一些元素

来自分类Dev

连接并从numpy数组中删除重复的元素

来自分类Dev

使用条件检查从numpy数组中删除某些元素

来自分类Dev

删除MXN numpy数组中特定位置的元素

来自分类Dev

从两个Numpy数组中删除重复的元素

来自分类Dev

一次删除numpy数组中某个值的元素

来自分类Dev

从两个Numpy数组中删除匹配元素

来自分类Dev

根据列表从2D Numpy数组中删除元素

来自分类Dev

如何删除numpy数组中的前导掩码元素?

来自分类Dev

使用条件检查从numpy数组中删除某些元素

来自分类Dev

从numpy数组中删除某些元素而不破坏结构

来自分类Dev

如何从 NumPy 数组中删除所有出现的元素?

来自分类Dev

从数组中删除元素

来自分类Dev

如何在numpy数组中的所有numpy数组中删除第n个元素?

来自分类Dev

如何在numpy数组中的所有numpy数组中删除第n个元素?

来自分类Dev

在numpy数组python中的每个元素之后添加元素

Related 相关文章

热门标签

归档