2
我寫下面的函數相對於計算的行由一個矩陣的行相關性來選擇的行(由index
參數指定):如何提高非常低效numpy的代碼,用於計算相關
# returns a 1D array of correlation coefficients whose length matches
# the row count of the given np_arr_2d
def ma_correlate_vs_index(np_arr_2d, index):
def corr_upper(x, y):
# just take the upper right corner of the correlation matrix
return numpy.ma.corrcoef(x, y)[0, 1]
return numpy.ma.apply_along_axis(corr_upper, 1, np_arr_2d, np_arr_2d[index, :])
的問題在於代碼非常非常慢,我不確定如何提高性能。我相信apply_along_axis
的使用以及corrcoef
正在創建2D陣列的事實都是導致性能較差的原因。有沒有更直接的方法來計算,可能會有更好的表現?
萬一它很重要我使用ma
版本的功能掩蓋了在數據中找到的一些nan
值。此外,我的數據np_arr_2d
的形狀是(623065, 72)
。