У меня есть массив, имеющий форму ~ (700,36000)
, и я хотел бы рассчитать коэффициент корреляции Пирсона только для определенного столбца c (против всех других столбцов), но тысячи раз. Я пробовал это несколькими способами, но ни один из них не оказался настолько эффективным:
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 с за итерацию, но все еще слишком медленно. Есть ли способы быстрее найти коэффициент корреляции между столбцом и всеми другими столбцами?