python - 如何根据numpy数组中的一系列数字用缺失值替换`0`?
问题描述
我有一个numpy
包含一系列ints
. 我想0
用系列中的缺失值填充 s 。
最初,我将这些值放在数据框的列中pandas
,但为简单起见,我决定使用numpy
数组来发布问题。
>>> a = np.array([15, 25, 0, 45, 0, 0, 75, 85])
>>> a
>>> array([15, 25, 0, 45, 0, 0, 75, 85])
我希望输出为,
>>> array([15, 25, 35, 45, 55, 65, 75, 85])
我想在不使用循环的情况下解决这个问题,因为这会破坏使用numpy
or的目的,pandas
并且使用循环的代码会慢得多。
我不想用新值替换整个列,这会作为副作用更新0
s 。
我只想0
根据系列用缺失值更新 s 。
解决方案
这对熊猫来说是直截了当的。您可以使用interpolate
(其默认插值方法是linear
)应用线性插值:
a = np.array([15, 25, 0, 45, 0, 0, 75, 85])
s = pd.Series(a)
s.mask(s.eq(0)).interpolate()
0 15.0
1 25.0
2 35.0
3 45.0
4 55.0
5 65.0
6 75.0
7 85.0
dtype: float64
推荐阅读
- node.js - 用户更改了他的个人资料图片后,应该像他以前上传的帖子,旧的评论一样全面更改他的个人资料图片
- laravel - Display all approved Posts belonging to a category Laravel
- javascript - 如何创建 JavaScript 正则表达式来测试一行是否以“//”开头
- python-sphinx - 有没有办法使用 RST 和 Sphinx 对文本项进行编号?
- php - PHP - 打开PDF“关于:空白”页面
- flutter - 无法从 json 反序列化为自定义对象列表
- laravel-7 - 从上下文调用私有方法 Kreait\Firebase\ServiceAccount::fromArray()
- ios - 核心音频:不推荐使用 AUGraph 时如何通过 MusicPlayer 播放 MIDI MusicSequence?
- java - 制作killcounter minecraft java时出错
- python - 使用 auto-py-to-exe 将 .py 转换为 .exe 时遇到问题