首页 > 解决方案 > RuntimeWarning:与 np.where() 相除时遇到无效值

问题描述

我不明白为什么我仍然有这个错误:

“RuntimeWarning:在 true_divide 中遇到除以零”

我申请的应该防止它np.where。请注意,除以零是正确处理的,因为我最终得到 anp.nan而不是 a -inf

当然我可以人为地忽略警告,但我想了解......

import pandas as pd
import numpy as np
series_raw = pd.Series([0, float('nan'), 1,4,6,-1], [0,1,2,3,4,5])
print(series_raw)

# Ignore the divide by zero errors
# np.seterr(divide='ignore', invalid='ignore')

x = series_raw.values

values = np.where(np.logical_or(x == 0, np.isnan(x)), np.nan, 10 /x)

# Re-activate the divide by zero errors
# np.seterr(divide='warn', invalid='warn')

series_modified = pd.Series(values, series_raw.index)
print(series_modified)

输出:

0    0.0
1    NaN
2    1.0
3    4.0
4    6.0
5   -1.0

dtype: float64
0          NaN
1          NaN
2    10.000000
3     2.500000
4     1.666667
5   -10.000000
dtype: float64

RuntimeWarning:在 true_divide 中遇到除以零

标签: pythonnumpy

解决方案


推荐阅读