ndarray的聚合操作
1. 求和np.sum
n = np.random.randint(0, 10, size=(4, 5))
n
"""
array([[2, 6, 7, 9, 4],
[8, 2, 4, 8, 8],
[2, 6, 0, 9, 8],
[9, 0, 2, 9, 2]])
"""
# 累加, 如果不指定轴(axis), 在numpy中会默认把所有维度数据聚合累加
np.sum(n) # 105
n.sum() # 105; 与np.sum(n)一样
# 指定维度聚合, axis=0对行聚合, 相当于求了每一列的和.
np.sum(n, axis=0) # array([21, 14, 13, 35, 22])
n.sum(axis=0) # array([21, 14, 13, 35, 22])
# axis=1对列聚合, 相当于求了每一行的和.
np.sum(n, axis=1) # array([28, 30, 25, 22])
2. 最大最小值:np.max/ np.min
np.max(n) # 9;求n中最大值
n.max() # 9
n.min() # 0; 求最小值
n = np.random.randint(0, 10, size=5)
n # array([2, 9, 9, 7, 5])
# product 乘积, 连乘 2 * 9 * 9 * 7 * 5
np.prod(n) 5670
# average 平均值
np.mean(n) # 6.4
3. 其他聚合操作
n # array([2, 9, 9, 7, 5])
# 幂运算 对每个元素进行平方
np.power(n, 2) # array([ 4, 81, 81, 49, 25], dtype=int32)
np.any 与 np.all
np.any N/A Evaluate whether any elements are true
np.all N/A Evaluate whether all elements are true
0, (), [], {}, ‘’, None, 在python中都认为是False
# any; ndarray中任意一个元素是True, 那么就返回True
n = np.array([1, 2, 3, 0])
n.any()# True
any(n) # True; 与n.any()等效
# all; ndarray中所有元素是True, 返回True, 否则返回False
n.all() # False
all(n) # False
np.percentile 求百分位数
# 计算从 0 到 99 的整数的四个百分位数的值:第 25%,第 50%(中位数),第 75% 和第 100% 百分位数。
np.percentile(np.arange(100), [25, 50, 75, 100]) # array([24.75, 49.5 , 74.25, 99. ])
np.argmin, np.argmax 求最大值或最小值的索引.
n = np.random.randint(0, 10, size=(4, 6))
n
"""
array([[3, 5, 1, 6, 4, 7],
[8, 3, 0, 5, 2, 3],
[5, 0, 3, 5, 8, 8],
[6, 4, 0, 4, 4, 5]])
"""
# 求narray 每列最小值的索引
np.argmin(n, axis=0) # array([0, 2, 1, 3, 1, 1], dtype=int64)
# 求narray 每行最大值的索引
np.argmax(n, axis=1) # array([5, 0, 4, 0], dtype=int64)
np.median 求中位数
np.median([1, 2, 3, 4, 5]) # 3.0
np.nansum 和 np.sum 的区别
消除nan的影响, 就用np.nan<聚合函数>
# nan是numpy中是特殊的东西. 表示不是一个数字, not a number, 取首字母. 但是又不是python中的None
# numpy中的nan是float类型,
type(np.nan) # float
# numpy中的nan有个特点: 任何数字和np.nan进行计算的时候, 返回的都是np.nan
1 + np.nan # nan
# 如果说你的ndarray中出现了nan的情况, 那么进行聚合运算的时候, 无论怎么算, 结果都会是nan
n = np.array([1, 2, 3, np.nan])
n.sum() # nan; 1 + 2 + 3 + np.nan
np.nansum(n) # 6.0
np.var 与 np.std
np.std 计算数组元素标准差。标准差是方差的平方根,用于衡量数据的离散程度或波动性。标准差越大,表示数据的波动性越高 。
np.var 计算数组元素的方差。方差是衡量数据分散程度的统计量。
n = np.array([1, 2, 3, 4, 5])
np.var(n) # 2.0
np.std(n) # 1.4142135623730951