这是我想出的最快方法:
import numpyx = numpy.arange(1000000, dtype=numpy.int32).reshape((-1,2))bad = numpy.arange(0, 1000000, 2000, dtype=numpy.int32)print x.shapeprint bad.shapecleared = numpy.delete(x, numpy.where(numpy.in1d(x[:,0], bad)), 0)print cleared.shape
打印:
(500000, 2)(500,)(499500, 2)
并且运行速度比ufunc快得多。它将使用一些额外的内存,但是对您来说是否还好取决于阵列的大小。
说明:
- 所述numpy.in1d返回一个数组的大小相同
x
的含True
如果元素是在bad
阵列中,和False
其它。 - 所述numpy.where匝那
True
/False
阵列到含有索引值,其中所述阵列是一个整数数组True
。 - 然后,它将索引位置传递到numpy.delete,告诉它沿第一个轴(0)删除
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)