如何有效地将值“提升”到3d数组中的NaN位置?

问题描述

我有一个嵌套列表的数据集,它们的长度都相同(大于120)。我只需要最新的120个有效值。 (因此,就像逐行将NaN值向上移动到末尾,然后选择最后一个120 是这样做的一种方法。)

如何有效地做到这一点? (因为我有数百万个此类样本)

[# Samples list
 [ # Sample 1
  [ 89.319787 1.329743 99.234670 ... 52.329743 0.319787 2.319787 ] 
  [ 84.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  [ 12.319787      NaN 33.329743 ... 52.329743 0.319787 2.319787 ] 
  [ 33.319787 1.329743 23.329743 ... 52.329743 0.319787 2.319787 ] 
  ... 
  [ 23.319787 1.329743 45.234670 ... 52.329743  0.32721 2.319787 ] 
  [ 89.319787      NaN 99.234670 ...       NaN      NaN 2.319787 ] 
  [ 84.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  [ 12.319787 1.329743       NaN ... 52.329743 0.319787 2.319787 ] 
  [ 33.319787 1.329743       NaN ... 52.329743      NaN 2.319787 ] 
                                                                  ],[ # Sample 2
  [ 89.319787 1.329743 99.234670 ... 52.329743 0.319787 2.319787 ] 
  [ 84.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  [ 12.319787      NaN 33.329743 ... 52.329743 0.319787 2.319787 ] 
  [ 33.319787 1.329743 23.329743 ... 52.329743 0.319787 2.319787 ] 
  ... 
  [ 23.319787 1.329743 45.234670 ... 52.329743  0.32721 2.319787 ] 
  [ 89.319787      NaN 99.234670 ...       NaN      NaN 2.319787 ] 
  [ 84.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  [ 12.319787 1.329743       NaN ... 52.329743 0.319787 2.319787 ] 
  [ 33.319787      NaN       NaN ... 52.329743      NaN 2.319787 ] 
                                                                  ],[...],[ # Sample n
  [ 89.319787 1.329743 99.234670 ... 52.329743 0.319787 2.319787 ] 
  [       NaN 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  [ 12.319787      NaN 33.329743 ... 52.329743 0.319787 2.319787 ] 
  [ 33.319787 1.329743 23.329743 ... 52.329743 0.319787 2.319787 ] 
  ... 
  [ 23.319787 1.329743 45.234670 ... 52.329743  0.32721 2.319787 ] 
  [ 89.319787      NaN 99.234670 ...       NaN      NaN 2.319787 ] 
  [ 84.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  [ 12.319787 1.329743       NaN ... 52.329743 0.319787 2.319787 ] 
  [ 33.319787 1.329743       NaN ... 52.329743      NaN 2.319787 ] 
                                                                  ]
]

预期结果:(这只是可以完成的一种方法,因为我只需要在每个垂直“列”中使用最新的120个有效值,而每个垂直“列”必须始终具有120个以上有效值) 注意:由于示例每个样本仅显示9行,而具有最低有效元素的垂直列包含6个非NaN元素,因此可以使用6个有效值代替120个有效值。

[# Samples list
 [ # Sample 1
  [ 89.319787      NaN       NaN ...       NaN      NaN 2.319787 ] 
  [ 84.319787      NaN       NaN ... 52.329743      NaN 2.319787 ] 
  [ 12.319787 1.329743 99.234670 ... 52.329743 0.319787 2.319787 ] 
  [ 33.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  ... 
  [ 23.319787 1.329743 33.329743 ... 52.329743 0.319787 2.319787 ] 
  [ 89.319787 1.329743 23.329743 ... 52.329743 0.319787 2.319787 ] 
  [ 84.319787 1.329743 45.234670 ... 52.329743  0.32721 2.319787 ] 
  [ 12.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  [ 33.319787 1.329743 99.234670 ... 52.329743 0.319787 2.319787 ] 
                                                                  ],[ # Sample 2
  [ 89.319787      NaN       NaN ...       NaN      NaN 2.319787 ] 
  [ 84.319787      NaN       NaN ... 52.329743      NaN 2.319787 ] 
  [ 12.319787      NaN 99.234670 ... 52.329743 0.319787 2.319787 ] 
  [ 33.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  ... 
  [ 23.319787 1.329743 33.329743 ... 52.329743 0.319787 2.319787 ] 
  [ 89.319787 1.329743 23.329743 ... 52.329743 0.319787 2.319787 ] 
  [ 84.319787 1.329743 45.234670 ... 52.329743  0.32721 2.319787 ] 
  [ 12.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  [ 33.319787 1.329743 99.234670 ... 52.329743 0.319787 2.319787 ] 
                                                                  ],[ # Sample n
  [       NaN      NaN       NaN ...       NaN      NaN 2.319787 ] 
  [ 84.319787      NaN       NaN ... 52.329743      NaN 2.319787 ] 
  [ 12.319787      NaN 99.234670 ... 52.329743 0.319787 2.319787 ] 
  [ 33.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  ... 
  [ 23.319787 1.329743 33.329743 ... 52.329743 0.319787 2.319787 ] 
  [ 89.319787 1.329743 23.329743 ... 52.329743 0.319787 2.319787 ] 
  [ 84.319787 1.329743 45.234670 ... 52.329743  0.32721 2.319787 ] 
  [ 12.319787 1.329743 49.329743 ... 52.329743    0.319 2.319787 ] 
  [ 33.319787 1.329743 99.234670 ... 52.329743 0.319787 2.319787 ] 
                                                                  ],]

样本数据:

samples = [[
[89.319787,1.329743,99.234670,52.329743,0.319787,2.319787],[84.319787,49.329743,0.319,[12.319787,np.nan,33.329743,[33.319787,23.329743,[23.319787,45.234670,0.32721,[89.319787,2.319787]
],[
[89.319787,[np.nan,2.319787]]]

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...