如何依据行的范数对numpy矩阵的行进行排序?
如何按行的范数对NumPy数组的行进行排序?
你可以通过三步实现按行的欧几里得范数对NumPy数组行进行降序排序:
- 计算每行的范数:用
np.linalg.norm并指定axis=1,得到每行的L2范数数组。 - 获取排序索引:通过
np.argsort获取范数降序对应的行索引(默认升序,取负或反转索引实现降序)。 - 重新排列数组:用得到的索引对原数组的行重新排序。
完整代码示例
import numpy as np # 原始数组 arr = np.array([[ 4.14022471, 3.96360618], [ 0.37601032, 1.25528411], [ 3.49313049, 0.94909878]]) # 计算每行的L2范数 row_norms = np.linalg.norm(arr, axis=1) # 获取范数降序对应的行索引 sorted_indices = np.argsort(-row_norms) # 按索引重新排列数组 sorted_arr = arr[sorted_indices] print(sorted_arr)
输出结果
array([[4.14022471, 3.96360618], [3.49313049, 0.94909878], [0.37601032, 1.25528411]])
如果需要升序排序,直接使用np.argsort(row_norms)即可,无需取负。
内容的提问来源于stack exchange,提问作者Formal_this
相关产品推荐
相关产品推荐

