我正在研究150个观测值和1500个变量的光谱医学数据阵列,存储如下(所有这些数据都是浮点数):
blood = ([[sample1_var1..., sample1_var1500],[sample2_var1..., sample2_var1500]..., [sample_150_var1..., sample150_var1500]])
我想获得每个变量与存储在150个观察列表中的另一个变量之间的相关系数,如:
ery = ([1.524, 1.987..., 1.369])
我需要获得var1
和ery
之间的'r'相关系数,然后var2
和ery
。是否有一种简单的方法(可能是for-loop)?
答案 0 :(得分:0)
我对你的问题的理解是:
blood
有1500个变量和150个观察值ery
是一个数组/列表(你实际上在你的问题中将它作为一个元素元组)blood
中每个变量与向量ery
的相关性)使用pandas和NumPy:
import pandas as pd
import numpy as np
np.random.seed(123)
blood = pd.DataFrame(np.random.rand(150,1500)).add_prefix('var')
# blood.shape = (150, 1500)
ery = pd.Series(np.random.rand(150))
print(blood.corrwith(ery))
var0 -0.12897
var1 -0.16448
var2 0.02315
var3 -0.09275
var4 -0.00337
var5 0.00094
var6 -0.13884
var7 -0.04296
var8 0.11895
var9 0.01626
var10 0.04122
var11 -0.04241
var1488 0.12936
var1489 -0.14607
var1490 0.14229
var1491 0.06072
var1492 -0.00815
var1493 0.03401
var1494 -0.00994
var1495 -0.10997
var1496 0.05980
var1497 -0.00930
var1498 0.05205
var1499 -0.11258
dtype: float64
故障排除:有助于指定您在问题中使用的数据结构。你现在拥有的东西是模棱两可的。如果ery
是列表,则您需要blood.corrwith(pd.Series(ery))
。