如何仅使用 Python 中的正项计算数组的列平均值?

How to compute the column average of an array using only the positive entries in Python?

import numpy as np

A = np.random.rand(3,3)
A[1,0] = -666
A[0,1] = -666
A[2,2] = -666

我有一个矩阵,除了 -666 表示缺失值或离群值外,所有条目均为正数。如何计算仅包含正项的列平均值和行平均值?

如果要从平均分母的计数中排除负值,可以使用 numpy.maximum 在沿所需的 dimension/axis 求和之前剪切负值,然后除以计数non-negative 沿这样的值 dimension/axis:

np.sum(np.maximum(A, 0), axis=0)/np.sum(A>0, axis=0)

另一方面,如果您还想计算分母中的负值:

np.mean(A*(A>0), axis=0)