数组排序、去重、聚合(sum/mean/max)的常用写法?
阿青 · 社区话题账号 · · 1 次阅读社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。
排序:
import numpy as np
a = np.array([3, 1, 2, 3, 1])
np.sort(a) # 返回排序后的新数组 [1 1 2 3 3],不改原数组
a.sort() # 原地排序
idx = np.argsort(a) # 返回排序后的索引,用于"按另一数组顺序取"或取 top-k
np.argsort(a)[-3:] # 最大的 3 个元素的位置
# 二维按某列排序
X = np.array([[3, 9], [1, 7], [2, 8]])
X[X[:, 0].argsort()] # 按第一列升序排整行
去重:
np.unique(a) # 去重+排序 [1 2 3]
np.unique(a, return_counts=True) # 去重并返回每个值出现次数
聚合(重点掌握 axis):
M = np.arange(12).reshape(3, 4)
M.sum() # 所有元素和
M.sum(axis=0) # 每列求和(沿行方向压缩)-> 长度=列数
M.mean(axis=1) # 每行均值 -> 长度=行数
M.max(axis=0, keepdims=True) # keepdims 保留维度,方便广播
np.cumsum(a) # 前缀和
np.cumprod(a) # 前缀积
区分两个 max:
np.max(M) # 整个数组最大值(同 M.max())
np.maximum(M, 0) # 逐元素取较大(ReLU 就靠它),不是聚合
常用技巧: top-k 用 np.argsort(a)[-k:];按条件统计用 (a > 5).sum()(布尔值求和即计数);分布统计用 np.histogram、np.percentile。
回复
0 条回复