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

6za6bjd0  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(91)

我正在对4个非常大的数组进行PCA计算。这些数组包括NaN个单元。为了使PCA工作,我必须将数组重新整形为向量(一维而不是二维)并且我删除所有NaN单元格,这改变了向量的长度。PCA返回4个新向量,我需要将这些向量重新整形为与原始数组完全相同的维度,并且每个像元都返回到其原始值索引。
数组中的NaN单元格没有任何特定的顺序,它们是随机的。我尝试使用arr.reforme(arr.shape [0]* arr.shape [1],1)来创建具有NaN值的向量。
保存NaN值的索引,然后删除它们并对向量运行PCA,插入NaN值并将它们再次整形为原始数组的形状

  • 数组的维数都相等(23292,9120)

由于数组的大小,迭代保存NaN索引并将其插入PCA之后需要花费太长的时间
如果有人对如何恢复阵列有更好的了解,我将不胜感激谢谢

jum4pzuy

jum4pzuy1#

我会使用遮罩图像来完成此操作。例如:

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

相关问题