2.3.5 排序函数

函数功能说明示例代码示例输出
np.sort(x)返回排序后的副本np.sort([3, 1, 2])[1 2 3]
x.sort()原地排序(修改原数组) arr = np.array([3,1,2]); arr.sort()arr 变为 [1, 2, 3]
np.argsort(x)返回排序后的索引np.argsort([3, 1, 2])[1, 2, 0]
np.lexsort(keys)多键排序(按最后一列优先)np.lexsort(([2,1,3], [3,1,2]))[1, 0, 2]

ndarray.sort():就地排序(直接修改原数组)。

axis:指定排序的轴。默认值为 -1,表示沿着最后一个轴进行排序。在二维数组中,axis = 0 表示按列排序,axis = 1 表示按行排序。

在 NumPy 中,轴是对数组维度的一种抽象描述。对于多维数组,每个维度都对应一个轴,轴的编号从 0 开始。对于二维数组,它有两个轴:

轴 0:代表垂直方向,也就是行的方向。可以把二维数组想象成一个表格,轴 0 就像是表格中从上到下的行索引方向对列数据排序,所以axis=0表示按列排序。

轴 1:代表水平方向,也就是列的方向。就像是表格中从左到右的列索引方向对行数据进行排序,所以axis=1表示按行排序。

arr1 = np.random.randint(0, 10, (3, 3))
print(arr1)
arr1.sort()
print(arr1)
arr1.sort(axis=0)
print(arr1)

arr1 = np.random.randint(0, 10, (3, 3))
print(arr1)
print(np.sort(arr1))

2.3.6  去重函数

函数功能说明示例代码示例输出
np.unique(x)返回唯一值并排序np.unique([2, 1, 2, 3, 1])[1 2 3]
np.in1d(a, b)检查 a 的元素是否在 b 中存在np.in1d([1, 2, 3], [2, 4])[False, True, False]

np.unique():计算唯一值并返回有序结果。

arr1 = np.random.randint(0, 5, (3, 3))
print(arr1)
print(np.unique(arr1))

2.3.7 其他实用函数

函数功能说明示例代码示例输出
np.concatenate((a, b))数组拼接np.concatenate(([1,2], [3,4]))[1, 2, 3, 4]
np.split(x, indices)分割数组np.split([1,2,3,4], [2])[array([1,2]), array([3,4])]
np.reshape(x, shape)调整数组形状np.reshape([1,2,3,4], (2,2))[[1, 2], [3, 4]]
np.copy(x)创建数组的深拷贝b = np.copy(a)b 与原数组 a 独立
np.isnan(x)检测 NaN 值np.isnan([1, np.nan, 3])[False, True, False]

2.3.8  章节小结

注意事项

  1. 原地操作与副本:  
  2. x.sort() 直接修改原数组,而 np.sort(x) 返回副本。
  3. 缺失值处理:  
  4. 使用 np.isnan() 检测 NaN,但统计函数默认忽略 NaN(需用 np.nanmean() 等专门函数)。
  5. 维度匹配:  
  6. 拼接(concatenate)或分割(split)时需确保维度一致。
  7. 广播机制:  
  8. 比较函数支持广播(如 np.greater(arr, 5) 判断每个元素是否大于5)。
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容