首页 > 解决方案 > 仅用零填充左 NaN 的最 Pythonic 方式是什么?

问题描述

我想优化一个 numpy 函数来填充数组的一部分。它需要一个' 内部np.array()的1D。nan其中一些都在左侧,我只希望它们用零填充。例子:

由此:

np.array([ np.nan, np.nan, np.nan, 3, 4, 5, np.nan, 7, 8, 9, np.nan ])

我想得到这个:

np.array([ 0, 0, 0, 3, 4, 5, np.nan, 7, 8, 9, np.nan ])

其他“内部”缺失值应该保持不变,我会以不同的方式处理它们。

最Pythonic的方法是什么?

标签: pythonnumpy

解决方案


与上述类似的解决方案,使用np.minandnp.where代替maxand np.argmax

import numpy as np

x = np.array([ np.nan, np.nan, np.nan, 3, 4, 5, np.nan, 7, 8, 9, np.nan ])

x[0:np.min(np.where(~np.isnan(x)))] = 0

我认为这更具可读性,就像句子“将索引 0 中的所有值设置为值不是 nan 为零的最小索引”一样


推荐阅读