首页 > 解决方案 > 复制和替换 numpy 数组中的值.. nans 将是 nan 但其他值将为零

问题描述

我有一个 numpy 数组,我想将其复制到另一个 numpy 数组并将除 nan 值之外的所有值替换为零。你能帮忙吗?

标签: pythonarraysnumpynan

解决方案


如果你想设置一个 0 数组,那么我想没有必要复制原始数组。只需创建一个零数组并将适当的索引设置为 nan。

import numpy as np

a = np.array([1, 2, np.nan, 4, 5, np.nan])
b = np.zeros(a.shape)
b[np.isnan(a)] = np.nan

输出

>>> b
[ 0.  0. nan  0.  0. nan]

编辑:现在您已经更新了问题,您可以改用它:

import numpy as np

a = np.array([1, 2, np.nan, 4, 5, np.nan])
b = np.zeros(a.shape)
c = np.array([10, 11, 12, 13, 14, 15])
b[np.isnan(a)] = c[np.isnan(a)]

print(b)

输出

>>> b
[ 0.  0. 12.  0.  0. 15.]

如果这也是您使用的,请随意将 dtype 更改为 int


推荐阅读