gpt4 book ai didi

python - np.where 等价于一维数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:19:41 24 4
gpt4 key购买 nike

我正在尝试用另一个数组中的值填充一个数组中的 nan 值。由于我正在处理的数组是一维 np.where不管用。但是,按照 documentation 中的提示进行操作我尝试了以下方法:

import numpy as np

sample = [1, 2, np.nan, 4, 5, 6, np.nan]
replace = [3, 7]

new_sample = [new_value if condition else old_value for (new_value, condition, old_value) in zip(replace, np.isnan(sample), sample)]

但是,我期望的输出是 [1, 2, 3, 4, 5, 6, 7] 我得到:

[Out]: [1, 2]

我做错了什么?

最佳答案

np.where 有效

In [561]: sample = np.array([1, 2, np.nan, 4, 5, 6, np.nan])

使用isnan 来识别nan 值(不要使用==)

In [562]: np.isnan(sample)
Out[562]: array([False, False, True, False, False, False, True])

In [564]: np.where(np.isnan(sample))
Out[564]: (array([2, 6], dtype=int32),)

bool 值或 where 元组中的任何一个都可以索引 nan 值:

In [565]: sample[Out[564]]
Out[565]: array([nan, nan])
In [566]: sample[Out[562]]
Out[566]: array([nan, nan])

并用于替换:

In [567]: sample[Out[562]]=[1,2]
In [568]: sample
Out[568]: array([1., 2., 1., 4., 5., 6., 2.])

三个参数也有效 - 但返回一个副本。

In [571]: np.where(np.isnan(sample),999,sample)
Out[571]: array([ 1., 2., 999., 4., 5., 6., 999.])

关于python - np.where 等价于一维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49675737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com