G M*_*G M 2 python boolean numpy
我试图像这样计算False
价值np.array
:
import numpy as np
a = np.array([[True,True,True],[True,True,True],[True,False,False]])
Run Code Online (Sandbox Code Playgroud)
我通常使用这种方法:
number_of_false=np.size(a)-np.sum(a)
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
Ant*_*ala 10
使用count_nonzero
计数非零(例如,不False
)值:
>>> np.size(a) - np.count_nonzero(a)
2
Run Code Online (Sandbox Code Playgroud)
更清楚的是肯定要问确切需要什么,但这并不意味着它是最有效的:
使用%%timeit
在jupyter
与Python 2.7上,提出答案给出了一个明确的赢家:
seq = [[True, True, False, True, False, False, False] * 10 for _ in range(100)]
a = np.array(seq)
np.size(a) - np.count_nonzero(a) 1000000 loops, best of 3: 1.34 µs per loop - Antti Haapala
(~a).sum() 100000 loops, best of 3: 18.5 µs per loop - Paul H
np.size(a) - np.sum(a) 10000 loops, best of 3: 18.8 µs per loop - OP
len(a[a == False]) 10000 loops, best of 3: 52.4 µs per loop
len(np.where(a==False)) 10000 loops, best of 3: 77 µs per loop - Forzaa
.
Run Code Online (Sandbox Code Playgroud)
明显的赢家是Antti Haapala,其数量级为np.size(a) - np.count_nonzero(a)
len(np.where(a==False))
似乎受到数组嵌套结构的惩罚; 1 D阵列的相同基准给出10000 loops, best of 3: 27 µs per loop
归档时间: |
|
查看次数: |
6260 次 |
最近记录: |