有什么我可以做的,以加快numpy中的屏蔽数组?我有一个非常低效的函数,我重写了使用被屏蔽的数组(我可以屏蔽行而不是复制和删除行)。但是,我惊讶地发现掩码函数速度慢了10倍,因为掩码阵列速度非常慢。Python/Numpy - 屏蔽数组非常慢
作为一个例子,可采取下列(掩蔽是对我来说更慢然后6次):
import timeit
import numpy as np
import numpy.ma as ma
def test(row):
return row[0] + row[1]
a = np.arange(1000).reshape(500, 2)
t = timeit.Timer('np.apply_along_axis(test, 1, a)','from __main__ import test, a, np')
print round(t.timeit(100), 6)
b = ma.array(a)
t = timeit.Timer('ma.apply_along_axis(test, 1, b)','from __main__ import test, b, ma')
print round(t.timeit(100), 6)
请记住,MaskedArrays比实际解决方案更方便。如果您需要对数组中缺失/未定义值进行密集计算,那么在大多数情况下,您最好自己处理掩码和数据。直到在NumPy代码中更好地实现丢失/未定义的值(这种情况应该很快发生)之前,您将被禁止使用MaskedArrays。是的,它们很慢,因为它们是用纯Python编码的,当然不能像依赖某些C代码那样高效。 – 2012-08-17 11:46:38
感谢您的问题,这证实了我怀疑我的代码 – 2017-08-29 10:11:50