python - 仅用零填充左 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的方法是什么?
解决方案
与上述类似的解决方案,使用np.min
andnp.where
代替max
and 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 为零的最小索引”一样。
推荐阅读
- java - 服务类应该是类图的一部分吗?
- java - 不正确的乘法
- java - OneToMany 只返回特定的行
- node.js - 使用 npm run build:prod 构建 Angular 应用程序后无法运行 npm run server
- flutter - 为什么boxShadow可以改变容器的背景颜色?
- ruby-on-rails - Ruby on Rails 活动存储验证
- jenkins - jenkins how to use ssh-agent in docker
- javascript - 为什么我们在 nodejs 中使用 async/await 如果它已经是异步的,而在 javascript 中也是如此?
- autodesk-forge - 将 Autodesk Forge 应用程序转移给其他用户
- javascript - Chosen jquery plugin - 获取多选的选定文本/标签(不是值)