计算两个多维数组之间的相关系数

计算两个多维数组之间的相关系数,第1张

计算两个多维数组之间的相关系数

两个2D数组之间的相关性(默认为“有效”大小写):

您可以

np.dot
像这样简单地使用矩阵乘法-

out = np.dot(arr_one,arr_two.T)

"valid"
两个输入数组的每个成对行组合(row1,row2)之间的默认情况的关联将对应于每个(row1,row2)位置处的乘法结果。


两个2D数组的行相关系数的计算:

def corr2_coeff(A, B):    # Rowwise mean of input arrays & subtract from input arrays themeselves    A_mA = A - A.mean(1)[:, None]    B_mB = B - B.mean(1)[:, None]    # Sum of squares across rows    ssA = (A_mA**2).sum(1)    ssB = (B_mB**2).sum(1)    # Finally get corr coeff    return np.dot(A_mA, B_mB.T) / np.sqrt(np.dot(ssA[:, None],ssB[None]))

这是基于此解决方案

How to apply corr2 functions in Multidimentional arrays inMATLAB

标杆管理

本部分将运行时性能与针对其他答案中列出的基于

generate_correlation_map
&循环
pearsonr
的方法的建议方法进行比较。(取自该函数
test_generate_correlation_map()
末尾没有值正确性验证代码的函数)。请注意,建议的方法的时间安排还包括在开始时进行检查,以检查两个输入数组中的列数是否相等,就像在其他答案中所做的那样。接下来列出运行时。

情况1:

In [106]: A = np.random.rand(1000, 100)In [107]: B = np.random.rand(1000, 100)In [108]: %timeit corr2_coeff(A, B)100 loops, best of 3: 15 ms per loopIn [109]: %timeit generate_correlation_map(A, B)100 loops, best of 3: 19.6 ms per loop

情况2:

In [110]: A = np.random.rand(5000, 100)In [111]: B = np.random.rand(5000, 100)In [112]: %timeit corr2_coeff(A, B)1 loops, best of 3: 368 ms per loopIn [113]: %timeit generate_correlation_map(A, B)1 loops, best of 3: 493 ms per loop

情况3:

In [114]: A = np.random.rand(10000, 10)In [115]: B = np.random.rand(10000, 10)In [116]: %timeit corr2_coeff(A, B)1 loops, best of 3: 1.29 s per loopIn [117]: %timeit generate_correlation_map(A, B)1 loops, best of 3: 1.83 s per loop

另一种循环

pearsonr based
方法似乎太慢,但是这里是一个小数据大小的运行时-

In [118]: A = np.random.rand(1000, 100)In [119]: B = np.random.rand(1000, 100)In [120]: %timeit corr2_coeff(A, B)100 loops, best of 3: 15.3 ms per loopIn [121]: %timeit generate_correlation_map(A, B)100 loops, best of 3: 19.7 ms per loopIn [122]: %timeit pearsonr_based(A, B)1 loops, best of 3: 33 s per loop


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5645875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存