Numpy计算数组中满足条件元素个数

Numpy计算数组中满足条件元素个数

  • 需求:有一个十分庞大的数组比如1亿个数字,求出里面数字小于5000的数字数目

1.使用随机函数生成1亿个数字

import numpy as np
arr=np.random.randint(1,10000,size=100000000)
arr[:10]
array([9442, 2462, 4737,  888, 7282, 3496,  212, 8930, 7526, 6523])
arr.size
100000000

2.使用python循环求出结果

pyarr=list(arr) # 转换为列表
len([x for x in pyarr if x<5000]) # 列表生成式
49997918
# 消耗时间
%time len([x for x in pyarr if x<5000]) # 列表生成式
Wall time: 34.2 s





49997918

3.使用numpy进行计算

arr[arr<5000].size
49997918
(arr<5000)[:10]
array([False,  True,  True,  True, False,  True,  True, False, False,
       False])
# 消耗时间
%time arr[arr<5000].size
1.49 s ± 39.1 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
# 两种方法时间对比

34.2/1.24 # 相差近28倍
27.580645161290324
    原文作者:Tan_jianchi
    原文地址: https://blog.csdn.net/Tan_jianchi/article/details/120636668
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞