我尝试按如下方式对列表进行排序和反转:
train_eigen_pairs = [(np.abs(train_eigen_vals[i]),train_eigen_vec[:,i]) for i in range(len(train_eigen_vals))]
train_eigen_pairs.sort(reverse=True)
# Also tried :
reversed(sorted(train_eigen_pairs))
# and
reversed(train_eigen_pairs.sort())
对于所有三种变体,我收到以下错误消息:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
更新
重试后,我认为解决问题的方法是b,根据第一列对元组进行排序: 这是我尝试过的,但排序时间太长了。
sorted( train_eigen_pairs,key=lamda train_eignen_pairs: train_eigen_pairs[0], reverse=True)
显然我错过了一些东西,因为它崩溃了IDE。第一列包含浮点值,第二列包含浮点值。
train_eigen_pairs[0][0] is a float
train_eigen_pairs[0][1] is a complex vector
我知道如何解决这个问题? 提前谢谢!
答案 0 :(得分:0)
在尝试了多个变种之后,这是一个有效的变种,我希望它可以帮助那些人:
train_eigen_pairs.sort(key=lambda x:x[0],reverse=True)