尝试找到最快的方法来启动 1D numpy True 值数组。
%timeit -n 100000 -r 30 np.ones(10000, dtype=bool)
返回 750 纳秒 ± 35.7 纳秒
然而
%timeit -n 100000 -r 30 ~np.zeros(10000, dtype=bool)
返回 682 纳秒 ± 7.47 纳秒
行为可能取决于数组大小,但是否有选择哪一个的一般经验法则?还有其他更快的方法吗?
尝试找到最快的方法来启动 1D numpy True 值数组。
%timeit -n 100000 -r 30 np.ones(10000, dtype=bool)
返回 750 纳秒 ± 35.7 纳秒
然而
%timeit -n 100000 -r 30 ~np.zeros(10000, dtype=bool)
返回 682 纳秒 ± 7.47 纳秒
行为可能取决于数组大小,但是否有选择哪一个的一般经验法则?还有其他更快的方法吗?
np.frombuffer(bytearray().ljust(10000, b"\x01"), dtype=bool)
empty
比或更快full
。NumPy 1.22.4 的基准测试结果:这(滥用)了底层调用的事实,这意味着字节数组可以非常快速地初始化。其余的只是构造字节数组和 NumPy 数组的
bytearray.ljust
开销。memset
UPD:@nneonneo 的解决方案比这个快 2.5..3 倍
np.empty()
然后分配更快以下命令似乎可以获得更好的性能(无需强制转换):