我是靠谱客的博主 包容口红,这篇文章主要介绍Numpy-06计算数组中满足条件元素个数Numpy计算数组中满足条件元素个数,现在分享给大家,希望可以做个参考。

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

需求:有一个非常大的数组比如1亿个数字,求出里面数字小于5000的数字数目

1.使用numpy的random模块生成1亿个数字

In [1]:

复制代码
1
2
import numpy as np

In [3]:

复制代码
1
2
arr = np.random.randint(1, 10000, size=int(1e8))

In [4]:

复制代码
1
2
arr[: 10]

Out[4]:

复制代码
1
2
array([ 594, 490, 6373, 7500, 3744, 396, 5015, 7801, 4586, 3148])

In [5]:

复制代码
1
2
arr.size

Out[5]:

复制代码
1
2
100000000

2.使用Python原生语法实现

In [6]:

复制代码
1
2
pyarr = list(arr)

In [7]:

复制代码
1
2
3
# 计算下结果,用于对比是否准确 len([x for x in pyarr if x>5000])

Out[7]:

复制代码
1
2
49995195

In [8]:

复制代码
1
2
3
4
# 记一下时间 %timeit len([x for x in pyarr if x>5000]) 23.1 s ± 358 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

3.使用numpy的向量化操作实现

In [9]:

复制代码
1
2
3
# 计算下结果,用于对比是否准确 arr[arr>5000].size

Out[9]:

复制代码
1
2
49995195

In [10]:

复制代码
1
2
(arr>5000)[: 10]

Out[10]:

复制代码
1
2
3
array([False, False, True, True, False, False, True, True, False, False])

In [11]:

复制代码
1
2
3
4
# 记一下时间 %timeit arr[arr>5000].size 926 ms ± 50.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

4.对比下时间

In [12]:

复制代码
1
2
23.1 * 1000 / 926 # *1000是换算s与ms之间的单位

Out[12]:

复制代码
1
2
24.946004319654428

最后

以上就是包容口红最近收集整理的关于Numpy-06计算数组中满足条件元素个数Numpy计算数组中满足条件元素个数的全部内容,更多相关Numpy-06计算数组中满足条件元素个数Numpy计算数组中满足条件元素个数内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(90)

评论列表共有 0 条评论

立即
投稿
返回
顶部