簡體   English   中英

將大數組轉換為向量並將其恢復為數組,以便每個單元格都回到原來的位置

[英]turn large array into vector and restore it back to an array so that each cell is back in its original place

我正在對 4 個非常大的 arrays 進行 PCA 計算。這些 arrays 包括 NaN 單元格。 為了使 PCA 工作,我必須將 arrays 重塑為向量(一維而不是二維)並刪除所有 NaN 單元格,這會改變向量的長度。 PCA 返回 4 個新向量,我需要將它們重新整形為與原始 arrays 完全相同的維度,並且每個單元格都返回到其原始索引。

arrays 中的 NaN 單元格沒有任何特定順序,它們是隨機的。 我嘗試 arr.reshape(arr.shape[0]*arr.shape[1],1) 來創建具有 NaN 值的向量。

保存 NaN 值的索引然后刪除它們並對向量運行 PCA 並插入 NaN 值並再次將它們重塑為原始形狀 arrays

*arrays 的尺寸都相等(23292、9120)

由於 arrays 的大小,迭代保存 NaN 索引和將它們插入 PCA 之后的時間太長

如果有人對我如何恢復 arrays 有更好的想法,將不勝感激謝謝

我會為此使用蒙版圖像。 例如:

arr = … # your input image
mask = ~np.isnan(arr)
vec = arr[mask]  # 1D array with non-nan values
…
arr[mask] = vec  # writing values back

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM