将函数应用于两个同样形状的numpy矩阵

时间:2018-01-18 15:34:04

标签: python numpy matrix correlation

我正在寻找在两个矩阵之间应用统计函数的最优雅方式(某种映射/一两个操作)。这是我的函数应用于两个20项长分布

stats.pearsonr(data["histograms"][0][15][2], regions_hist[0][15][2])[0]
> 0.42524395175128987

两个矩阵具有相同的形状

data["histograms"][0].shape
> (16, 3, 20)
regions_hist[0].shape
> (16, 3, 20)

我正在寻找的是一种

的方式
Correlations = FancyMapping(data["histograms"][0],regions_hist[0])
Correlations.shape  # matrix with the 16*3 correlations between items of both
>(16,3)

你认为任何优雅的解决方案(塑造方面对我的问题很重要)吗?

1 个答案:

答案 0 :(得分:1)

您的示例似乎已在文档中,请参阅https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.vectorize.html的底部。所以

import scipy.stats
pearsonr = np.vectorize(scipy.stats.pearsonr, signature='(n),(n)->(),()')
correlations = pearsonr(data["histograms"][0],regions_hist[0])

应该工作:)