次の配列があるとします。
complete_matrix = numpy.array([
[0, 1, 2, 4],
[1, 0, 3, 5],
[2, 3, 0, 6]])
対角線のゼロを除いて、平均が最も高い列を特定したいと思います。したがって、この場合、complete_matrix[:,3] が平均が最も高い列であると特定できます。
この質問はここのものとは異なりますか: Finding the row with the maximum 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]