如何在Numba中用多维数组中的数字替换NaN? [英] how to replace nans by numbers in a multidimensional array in Numba?

查看:21
本文介绍了如何在Numba中用多维数组中的数字替换NaN?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在普通的Python中,在数字数组中就地用数字替换NaN是微不足道的。但是,在Numba中执行相同操作时,以下操作失败

@jit(nopython=True)
def dostuff():
    x = np.array([[1,np.nan,3]]);
    np.nan_to_num(x,copy=False);
dostuff()
如何在Numba可编译函数中就地用数字数组中的零替换NaN?对于一维,可以x[np.isnan(x)]=0,但对于更高的维,这也失败了。

推荐答案

对于一维,可以做x[np.isnan(X)]=0,但对于更高的 维度此操作也失败。

有线索:)

import numpy as np
from numba import jit

@jit(nopython=True)
def dostuff(x):
    shape = x.shape
    x = x.ravel()
    x[np.isnan(x)] = 0
    x = x.reshape(shape)
    return x

a = np.array([[1,np.nan,3], [np.nan, 2, 6]])
dostuff(a)
print(a)

输出:

[[1. 0. 3.]
 [0. 2. 6.]]

这篇关于如何在Numba中用多维数组中的数字替换NaN?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆