我正在对4个非常大的数组进行PCA计算。这些阵列包括NaN单元格。为了使PCA工作,我必须将数组重塑为向量(一维而不是二维),并删除所有NaN单元格,这改变了向量的长度。PCA返回4个新向量,我需要将它们重塑回与原始数组完全相同的维度,并且每个单元格返回到其原始索引。
数组中的NaN单元格没有特定的顺序,它们是随机的。我尝试用arr.shape (arr.shape[0]*arr.shape[1],1)来创建具有NaN值的向量。
保存NaN值的索引,然后删除它们,并在向量上运行PCA,插入NaN值并再次将其重塑为原始数组的形状
*数组的维数相等(23292,9120)
由于数组的大小,它需要很长时间来遍历保存NaN索引并将它们插入到PCA
之后如果有人有更好的主意,我将非常感谢我如何恢复数组,谢谢你
我会使用一个蒙版图像。例如:
arr = … # your input image
mask = ~np.isnan(arr)
vec = arr[mask] # 1D array with non-nan values
…
arr[mask] = vec # writing values back