There is no useful one in China. Here is the weighted covariance matrix calculation function. When used, the weights can be normalized first.
def weighted_cov(values, weights):
"""
Computes a weighted covariance matrix
:param values: the array of values
:param weights: array of weights for each entry of the values
:returns sigma: the weighted covariance matrix
"""
n = values.shape[1]
sigma = np.empty((n, n))
w = weights.sum() / (weights.sum()**2 - (weights**2).sum())
average = np.average(values, axis=0, weights=weights)
for j in range(n):
for k in range(n):
sigma[j, k] = w * np.sum(weights * ((values[:, j] - average[j]) * (values[:, k] - average[k])))
return sigma