实例
# Python 列表中既有标量,也有 numpy array 时,按照标量数值排序方法
import numpy as np
X = np.array([3, 1, 2])
# [3 1 2]
Y = np.array([[-0.8, 0.4, 0.2],[0.6, 0.1, -0.9],[0.3, 0.8, 0.7]])
# [[-0.8 0.4 0.2]
# [ 0.6 0.1 -0.9]
# [ 0.3 0.8 0.7]]
X_Y= [[X[i], Y[:,i]] for i in range(len(X))]
print(X_Y)
# [[3, array([-0.8, 0.6, 0.3])], [1, array([0.4, 0.1, 0.8])], [2, array([ 0.2, -0.9, 0.7])]]
X_Y.sort(key=lambda x: x[0]) # 按照标量数值从小到大排列
print(X_Y)
# [[1, array([0.4, 0.1, 0.8])], [2, array([ 0.2, -0.9, 0.7])], [3, array([-0.8, 0.6, 0.3])]]
X_Y.sort(reverse=True, key=lambda x: x[0]) # 按照标量数值从大到小排列
print(X_Y)
# [[3, array([-0.8, 0.6, 0.3])], [2, array([ 0.2, -0.9, 0.7])], [1, array([0.4, 0.1, 0.8])]]
参考
- https://stackoverflow.com/questions/46558862/how-to-sort-a-list-of-tuples-that-contain-numpy-array