08 Numpy 中的聚合操作

08 Numpy 中的聚合操作

import numpy as np
# 生成 [0, 1)之间的随机浮点数
L = np.random.random(100)
# Python中的求和
sum(L)
45.06650103069986
# np中的也有,  什么区别呢  ? ____> 效率
np.sum(L)
45.066501030699854
np.random.rand(1000000) 
# 生成[0, 1)之间均匀分布的随机数组   randn()为正太分布的数组  平均数为0 标准差为1
array([0.9010839 , 0.32788274, 0.4308207 , ..., 0.32737057, 0.3898526 ,
       0.68122126])
big_array = np.random.rand(1000000)  # 100万
%timeit sum(big_array)
%timeit np.sum(big_array)
85 ms ± 4.67 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
433 µs ± 9.78 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

min, max

np.min(big_array)
2.0659416377633022e-07
np.max(big_array)

0.9999999007085136
#面向对象的方式
big_array.min()
5.930966538114646e-06
#面向对象的方式
big_array.max()
0.9999999007085136
#面向对象的方式
big_array.sum()
499548.2276981067

多维度聚合

X = np.arange(16).reshape(4,-1)
X
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])
# 0 ~ 15 的和 ,所有的元素聚合
np.sum(X)

120
# 求沿着每一行的和,  每一列的和  axis描述的是将要被压缩的维度。
np.sum(X, axis=0)

array([24, 28, 32, 36])
np.sum(X, axis=1)

array([ 6, 22, 38, 54])

注意:axis描述的是将要被压缩的维度。

其他聚合操作

 # 所有元素的乘积
np.prod(X)
0
# 每一个元素加 1
np.prod(X + 1)

20922789888000
 # 平均值
np.mean(X)

7.5
# 中位数
np.median(X)

7.5
# 比作每个人工资
v = np.array([1, 1, 2, 2, 10])
np.mean(v)
3.2
np.median(v)
2.0
# big_array半分位点的值
np.percentile(big_array, q=50)
0.4991844210435135
np.median(big_array)
0.4991844210435135
np.percentile(big_array, q=100)
0.9999999007085136
np.max(big_array)
0.9999999007085136
for percent in [0, 25, 50, 75, 100]:
    print(np.percentile(big_array, q=percent))
5.930966538114646e-06
0.24921594838832217
0.4991844210435135
0.7499096639124945
0.9999999007085136
# 方差
np.var(big_array)
0.08335190610761217
# 标准差
np.std(big_array)
0.28870730179129894
#  均值为 0 方差为1
x = np.random.normal(0, 1, 1000000)
# 平均值
np.mean(x)

-0.0002871503582399596
np.std(x)
1.000075185869526
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容