今天在用写一段求和的代码时候,发现最后返回的是nan的结果,这段循环求和代码依次调用了三个函数,于是依次打印这三个函数的返回值,发现其中一个函数的返回值为nan,原来是因为这段函数里面没有相似的用户,所有返回结果为nan,于是我就想加一个判断条件,当结果为空时,跳过本次循环: if res==nan: continue 本以为加上这一句话就可以了,于是重新运行了一下,oh,shit!!!!结果没有任何变化,以前是nan的还是一样没有跳过.于是我想到了我用到了Python的numpy库,会不会是n
新年第一更!祝愿新的一年技术长足进步哈! 最近在用sklearn的回归分析模型拟合预测遥感图像,遇到了一些问题,好在一一解决,现在总结一下. 1.首先输入sklearn的数据必须reshape(-1,1),只有转换成这种格式才能进行输入.对于多因子的数据,要concatenate((a,b),axis=1),按列进行叠加. 2. ValueError: Input contains NaN, infinity or a value too large for dtype('float64')
NaN, Not a Number, 非数. 它即不是无穷大, 也不是无穷小, 而是python/numpy/... 觉得无法计算时返回的一个符号(自己的推测, 未考证(TODO)). import numpy as np 无穷大减无穷大会导致NaN a = np.infty print a - a nan print a * a, a * a - a inf nan 无穷大乘以0或无穷小或除以无穷大会导致NaN print a * 0 nan print a * 1/ a nan print
最近,处理两个矩阵的点除,得到结果后,再作其他的计算,发现有些内置的函数不work:查看得到的数据,发现有很多nan和inf,导致python的基本函数运行不了,这是因为在除的过程中分母出现0的缘故.为了将结果能够被python其他函数处理,尤其numpy库,需要将nan,inf转为python所能识别的类型.这里将nan,inf替换0作为例子. 1. 代码 import numpy as np a = np.array([[np.nan, np.nan, 1, 2], [np.inf, np.