我在写流体流动模拟的代码。我用必要的参数初始化了一个数组。我在这个数组上使用了numpy的sqrt函数。代码抛出一个警告如下:
RuntimeWarning: invalid value encountered in sqrt W2[i, :] = (np.sqrt(P2) / (d2 * v2))
我的代码运行良好,在进一步检查时,我发现数组中有一些负值,这些值位于np.sqrt内部。我的问题是,numpy怎么处理这些差异?
svdrlsy41#
可以使用seterr()或errstate()来控制此类异常的行为。根据设置,错误可能会被忽略,产生警告,引发异常,调用给定的函数,打印或记录错误。当不引发异常时,NumPy会在适当的情况下生成一个包含NaN或Inf值的结果:
>>> a = np.array([0, 1, -1, np.nan, np.inf]) >>> with np.errstate(all='ignore'): ... print(np.log(a)) ... print(1 / a) [-inf 0. nan nan inf] [inf 1. -1. nan 0.]
1条答案
按热度按时间svdrlsy41#
可以使用seterr()或errstate()来控制此类异常的行为。
根据设置,错误可能会被忽略,产生警告,引发异常,调用给定的函数,打印或记录错误。
当不引发异常时,NumPy会在适当的情况下生成一个包含NaN或Inf值的结果: