RuntimeWarning: invalid value encountered in less原因

RuntimeWarning: invalid value encountered in less


今天跑python代码时出现一个RuntimeWarning,导致我后面输出的值全为nan,warning显示错误在这里

if model['weights'][i][j] < 0

就是这样一个简单的比较式

后来随便设了一个数组测试一下

a = np.zeros(5, dtype=np.float32)
a[0] = np.nan
if a[0] < 0:
	print('ok')

输出了RuntimeWarning: invalid value encountered in less

知道问题在哪里改起来就简单了,出现这个问题是因为比较的数是无效值nan,导致if语句执行不了。

我的解决方法是将原来数组里面的nan改成0继续运行,查找nan值的话可以通过这个表达式进行判断

import math
print(math.isnan(a[0]))

输出的是

True

再将这些nan值改掉就可以了

注意,如果数组里有nan值那么取最大值最小值

print(np.max(a))
print(np.min(a))

输出的也是nan

nan
nan

同理对于这些判断语句

a[0] > 0
a[0] >= 0
a[0] <= 0

会输出

RuntimeWarning: invalid value encountered in greater
RuntimeWarning: invalid value encountered in greater_equal
RuntimeWarning: invalid value encountered in less_equal

你可能感兴趣的:(小问题)