【问题标题】:A Python function to calculate correlation matrix using the arbitrary number of variables使用任意数量的变量计算相关矩阵的 Python 函数
【发布时间】:2021-04-27 08:32:34
【问题描述】:

Python 中是否有一个函数可以使用任意数量的 Numpy 数组计算 (Pearson) 相关矩阵,同时处理这些数组中的 NaN?

import numpy as np
import numpy.ma as ma
a = np.random.random(10)
b = np.random.random(10)
c = np.random.random(10)
a[np.random.randint(0, 10, 2)] = np.nan
b[np.random.randint(0, 10, 2)] = np.nan
c[np.random.randint(0, 10, 2)] = np.nan
ma.corrcoef(ma.masked_invalid(a), ma.masked_invalid(b))

ma.corrcoef() 与我要找的很接近,但它只需要两个数组; ma.corrcoef(ma.masked_invalid(a), ma.masked_invalid(b)) 的结果与ma.corrcoef(ma.masked_invalid(a), ma.masked_invalid(b), , ma.masked_invalid(c)) 相同。我想传递许多数组并创建相关矩阵。例如,a_ideal_function(array1, array2, array3, array4, ..., arrayN) 将创建一个大小为 NxN 的相关矩阵。

另外...

  • 我的阵列将是一维的。
  • 我知道pandas.DataFrame().corr() 会做到这一点,但我想使用numpy.Array() 做到这一点,以保证运行时间。

【问题讨论】:

    标签: python numpy correlation


    【解决方案1】:

    我建议在 [ ] 中传递三个 'numpy.ma.core.MaskedArray' 元素,这将按预期输出一个 3x3 相关矩阵。

    具体来说,就是这段代码。

    ma.corrcoef([ma.masked_invalid(a), ma.masked_invalid(b),ma.masked_invalid(c)])

    【讨论】:

    • 谢谢。我在根据您的建议制作函数时遇到问题;我会通过另一个问题问。
    猜你喜欢
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2020-07-21
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多