Python 函数使用任意数量的变量计算相关矩阵
A Python function to calculate correlation matrix using the arbitrary number of variables
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()
来做到 运行 时间。
我建议在 [ ] 中传递三个 'numpy.ma.core.MaskedArray' 元素,这将按预期输出 3x3 相关矩阵。
具体来说,这段代码。
ma.corrcoef([ma.masked_invalid(a), ma.masked_invalid(b),ma.masked_invalid(c)])
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()
来做到 运行 时间。
我建议在 [ ] 中传递三个 'numpy.ma.core.MaskedArray' 元素,这将按预期输出 3x3 相关矩阵。
具体来说,这段代码。
ma.corrcoef([ma.masked_invalid(a), ma.masked_invalid(b),ma.masked_invalid(c)])