Sur*_*bra 7 python arrays numpy vectorization
如何使用Numpy对此for循环进行向量化?
count=0
arr1 = np.random.rand(184,184)
for i in range(arr1.size[0]):
for j in range(arr1.size[1]):
if arr1[i,j] > 0.6:
count += 1
print count
Run Code Online (Sandbox Code Playgroud)
我试过了:
count=0
arr1 = np.random.rand(184,184)
mask = (arr1>0.6)
indices = np.where(mask)
print indices , len(indices)
Run Code Online (Sandbox Code Playgroud)
我期望len(指数)给予计数,但事实并非如此.请给我任何建议.
Pau*_*zer 12
np.count_nonzero 应该比总和快一点:
np.count_nonzero(arr1 > 0.6)
Run Code Online (Sandbox Code Playgroud)
实际上,速度是它的三倍
>>> from timeit import repeat
>>> kwds = dict(globals=globals(), number=10000)
>>>
>>> arr1 = np.random.rand(184,184)
>>>
>>> repeat('np.count_nonzero(arr1 > 0.6)', **kwds)
[0.15281831508036703, 0.1485864429268986, 0.1477385900216177]
>>> repeat('(arr1 > 0.6).sum()', **kwds)
[0.5286932559683919, 0.5260644309455529, 0.5260107989888638]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6412 次 |
| 最近记录: |