如何识别numpy数组中平均值最大的列?

时间:2013-07-01 15:53:53

标签: python arrays numpy

给出以下数组:

    complete_matrix = numpy.array([
    [0, 1, 2, 4],
    [1, 0, 3, 5],
    [2, 3, 0, 6]])

我想确定平均值最高的列,不包括对角线零。因此,在这种情况下,我将能够将complete_matrix [:,3]识别为具有最高平均值的列。

2 个答案:

答案 0 :(得分:2)

这个问题与这里的问题有所不同: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。

答案 1 :(得分: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]