有沒有辦法從這個 Numpy 數組中矢量化相關係數的計算?

格蘭特·佩蒂

此代碼計算取自 M=102272 堆棧的所有可能的 L=45 元素向量對的 Pearson 相關係數。結果是一個對稱的 MxM 矩陣,佔用了大約 40 GB 的內存。內存要求對我的計算機來說不是問題,但我從測試運行中估計,大約 50 億次通過內循環需要 2-3 天才能完成。我的問題:是否有一種直接的方法來矢量化內循環以顯著加快速度?

# L = 45
# M = 102272
# data[M,L]  (type 'float32')   

cmat = np.zeros((M,M))

for i in range(M):
    v1 = data[i,:]
    z1 = (v1-np.average(v1))/np.std(v1) 

    for j in range(i+1):
        v2 = data[j,:]
        z2 = (v2-np.average(v2))/np.std(v2)  
        cmmat[i,j] = cmmat[j,i] = z1.dot(z2)/L
    
迪米特里 K. Sifoua

已經存在一個內置的 numpy 函數來計算相關矩陣。只需使用它!

>>> import numpy as np
>>> rng = np.random.default_rng(seed=42)
>>> xarr = rng.random((3, 3))
>>> xarr
array([[0.77395605, 0.43887844, 0.85859792],
       [0.69736803, 0.09417735, 0.97562235],
       [0.7611397 , 0.78606431, 0.12811363]])
>>> R1 = np.corrcoef(xarr)
>>> R1
array([[ 1.        ,  0.99256089, -0.68080986],
       [ 0.99256089,  1.        , -0.76492172],
       [-0.68080986, -0.76492172,  1.        ]])

文檔鏈接

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Numpy:如何以矢量化方式根據另一個數組的索引獲取整數數組切片的總和?

有沒有辦法使用曼哈頓距離選擇 Numpy 2D 數組的子集?

pandas numpy 如何簡化多個矢量化函數參數

有沒有辦法遍歷數組中的日期並將它們添加到這個對象?

有沒有辦法從 PyQt5 中的 QThread 返回數據類

有沒有辦法從 32 位整數轉換浮點數?

有沒有辦法使用 R 在整個數據幀中舍入因子?

有沒有辦法組合這些字符串然後使每個逗號值排成一行?

有沒有辦法在 c# selenium 中將 webdriver 實例從一個類傳遞到另一個類?

有沒有辦法對從數組中查找的多個值求和,使用單個輸入單元格和單個輸出單元格?

有沒有辦法從 React Native 中的另一個組件獲取所選項目的標題

SQL:如果沒有,有沒有辦法計算表中值的數量?

有沒有辦法在另一個地圖函數中使用地圖?

有沒有辦法從 R 中的列中取出異常值?

有沒有辦法從 c# 中的代碼單擊事件

有沒有辦法根據內容從列表中讀取成員?

有沒有辦法在不使用事件偵聽器的情況下從文本/事件流中獲得單個響應?

有沒有辦法在python中計算每週數據?

有沒有辦法刪除除數組中最後一個之外的所有重複鍵?

有沒有辦法從python中提取特定的整數值並將其添加到列表中,在這種情況下是88、151、212和276?

有沒有辦法從熊貓數據框中刪除自動截斷?

有沒有辦法在包中只包含一個模塊?

有沒有辦法繪製兩個變量出現在 R 中的實例?

有沒有辦法只用一個數組來編程康威的生命遊戲

每次列中出現一個值時,有沒有辦法增加一個數字?

基於現有的 3-D 數組 numpy 計算沒有循環的 3-D 數組 numpy 值

有沒有辦法將每個結果添加到數據框的一行中?

有沒有辦法將 Swift/SwiftUI 中的 KeyPathComparator 傳遞給另一個函數?

express js:有沒有辦法將url的所有其餘部分映射為一個參數?