当您对二进制值列表进行大量操作时,使用 numpy 有什么好处吗?小范围内的整数怎么样(比如数字 1,2 和 3?)
问问题
149 次
2 回答
3
消除循环是性能增益 (10x) 的来源:
import profile
import numpy as NP
def np_test(a2darray) :
row_sums = NP.sum(a2darray, axis=1)
return NP.sum(row_sums)
def stdlib_test2(a2dlist) :
return sum([sum(row) for row in a2dlist])
A = NP.random.randint(1, 6, 1e7).reshape(1e4, 1e3)
B = NP.ndarray.tolist(A)
profile.run("np_test(A)")
profile.run("stdlib_test2(B)")
麻木:
- 0.025 CPU 秒内10 次函数调用
列表:
- 0.280 CPU 秒内10005 次函数调用
于 2010-02-20T12:40:18.943 回答
1
如果输入值的数量很大,或者您正在执行大量操作,您可能需要尝试bitarray。或者,查看Numpy 的 ndarray 中的bool
// dtype int8
:uint8
In [1]: import numpy as np
In [2]: data = np.array([0,1,1,0], dtype=bool)
In [3]: data
Out[3]: array([False, True, True, False], dtype=bool)
In [4]: data.size
Out[4]: 4
In [5]: data.nbytes
Out[5]: 4
于 2010-02-20T04:24:44.733 回答