将大数组转换为向量并将其恢复为数组,以便每个单元格返回其原始位置



我正在对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

相关内容

  • 没有找到相关文章

最新更新