【发布时间】:2012-03-21 04:57:57
【问题描述】:
我有一个 NumPy 数组 a,如下所示:
>>> str(a)
'[ nan nan nan 1.44955726 1.44628034 1.44409573\n 1.4408188 1.43657094 1.43171624 1.42649744 1.42200684 1.42117704\n 1.42040255 1.41922908 nan nan nan nan\n nan nan]'
我想用最接近的非 NaN 值替换每个 NaN,这样一开始的所有 NaN 都设置为 1.449...,最后的所有 NaN 都设置为 1.419...。
我可以看到如何针对这样的特定情况执行此操作,但我需要能够对任何长度的数组执行此操作,在数组的开头和结尾使用任意长度的 NaN(不会有NaN 在数字中间)。有什么想法吗?
我可以使用np.isnan() 轻松找到 NaN,但我不知道如何获得最接近每个 NaN 的值。
【问题讨论】:
-
注:这与 numpy 或 NaN 无关本身;这只是一般的列表处理。
-
@JoshLee - 没错,但在 numpy 数组上使用通用列表处理技术效率非常低。在 python 中遍历一个 numpy 数组的每一项比遍历一个列表的每一项要慢得多。