如何使用Numpy按首行字母顺序重排矩阵列(保持行元素对应)
用Numpy实现按首行排序并保持列对应关系
完全可以用Numpy实现这个需求,操作步骤如下:
将原矩阵转为Numpy数组
先把原始矩阵转换成Numpy数组格式,方便后续操作:import numpy as np # 定义原始矩阵 matrix = np.array([ ['I', 'N', 'T', 'E', 'R', 'E', 'S', 'T', 'I', 'N', 'G'], ['D', 'G', 'F', 'F', 'G', 'D', 'A', 'A', 'D', 'V', 'A'], ['A', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' '] ])获取首行的排序索引
使用np.argsort()函数获取第一行元素按字母升序排列后的原索引位置,这个索引将用来统一调整所有行的列顺序:# 生成首行的排序索引 sort_indices = np.argsort(matrix[0])按索引重排所有列
利用得到的索引对整个矩阵的列进行重新排列,Numpy中[:, sort_indices]表示选取所有行,并按指定索引顺序选取列:# 对矩阵列进行排序调整 sorted_matrix = matrix[:, sort_indices]验证结果
打印排序后的矩阵,结果完全符合需求:print(sorted_matrix)输出:
[['E' 'E' 'G' 'I' 'I' 'N' 'N' 'R' 'S' 'T' 'T'] ['F' 'D' 'A' 'D' 'D' 'G' 'V' 'G' 'A' 'F' 'A'] [' ' ' ' ' ' 'A' ' ' ' ' ' ' ' ' ' ' ' ' ' ']]
核心原理:np.argsort()返回的是首行元素排序后的原位置索引,用这个索引对矩阵列进行重选,就能保证所有行的列与首行排序后的列保持一一对应关系。
内容的提问来源于stack exchange,提问作者guerni
相关产品推荐
相关产品推荐

