【发布时间】:2020-08-18 09:44:13
【问题描述】:
我有一个形状为 ~(700,36000) 的数组,并且想计算仅针对特定列(相对于所有其他列)但数千次的 pearson 相关系数。我已经尝试了很多方法,但似乎都没有那么有效:
import numpy
df_corr = numpy.corrcoef(df.T)
corr_column = df_corr.iloc[:, column_index]
这当然会计算整个相关矩阵,在我的机器上大约需要 12 秒;这是一个问题,因为我需要这样做约 35,000 次(在创建相关矩阵之前每次都会稍微改变 arr)!
我也尝试过逐列迭代:
corr_column = numpy.zeros(len(df))
for x in df.columns:
corr_column[x] = numpy.corrcoef(x=p_subset.iloc[:,gene_ix],y=p_subset.iloc[:,x])[0][1]
corr_column = vals.reshape(-1,1)
这在每次迭代约 10 秒时稍快,但仍然太慢。有没有办法更快地找到一列与所有其他列之间的相关系数?
【问题讨论】:
标签: python numpy correlation