给定以下数组:
complete_matrix = numpy.array([
[0, 1, 2, 4],
[1, 0, 3, 5],
[2, 3, 0, 6]])
我想确定具有最高平均值的列,不包括对角线零。因此,在这种情况下,我将能够将 complete_matrix[:,3] 识别为具有最高平均值的列。
这个问题与这里的问题不同吗:Finding the row with the highest average in a numpy array
据我了解,唯一的区别是这篇文章中的矩阵不是方阵。如果这是故意的,您可以尝试使用权重。由于我不完全理解您的意图,以下解决方案将 0 权重分配给零条目,否则为 1:
numpy.argmax(numpy.average(complete_matrix,axis=0, weights=complete_matrix!=0))
您始终可以创建一个权重矩阵,其中对角线条目的权重为 0,否则为 1。
就像是:
import numpy
complete_matrix = numpy.array([
[0, 1, 2, 4],
[1, 0, 3, 5],
[2, 3, 0, 6]])
print complete_matrix[:,numpy.argmax(numpy.mean(complete_matrix, 0))]
# [4 5 6]