python 快速替换Numpy 中的Nan(空值)和inf (无限值)
python 快速替换Numpy 中的Nan(空值)和inf (无限值)在做数据处理的时候由于要保证数据的个数不变,需要把数据中的空值和无穷值替换为指定的值(此处为255),考虑到数据量比较大(50000000条数据),效率也是一个考虑因素。下面主要给出了替换数据的核心代码。# +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--
·
python 快速替换Numpy 中的Nan(空值)和inf (无限值)
在做数据处理的时候由于要保证数据的个数不变,需要把数据中的空值和无穷值替换为指定的值(此处为255),考虑到数据量比较大(50000000条数据),效率也是一个考虑因素。 下面主要给出了替换数据的核心代码。 # +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ print('Predict New Data......') start = datetime.datetime.now() dataPre = input_Data # 此处输入需要处理的原始数据 # 0: 00:23.012951 标记了这个方法的时间(以50000000条数据为例) dataPre0 = np.array(dataPre) dataPre0[np.isnan(dataPre0)] = 255 dataPre0[np.isinf(dataPre0)] = 255 # 0:02:03.038840 dataPre1 = (dataPre) dataPre1 = dataPre1.replace([np.inf, -np.inf], np.nan) dataPre1 = dataPre1.fillna(value = 255) # 0:02:03.140287 dataPre2 = (dataPre) dataPre2 = (dataPre2.replace([np.inf, -np.inf], np.nan)).fillna(value = 255) # shi yong te ding shuju tian chong # 0:00:30.346661 dataPre3 = np.array(dataPre) dataPre3[(dataPre3 == float('inf')) | (dataPre3 == float('-inf')) | (dataPre3 == float('nan'))] = 255 # 0:00:19.702519 dataPre4 = np.array(dataPre) dataPre4[np.isinf(dataPre4)] = np.nan # 将数组里面的无穷值转为空值 dataPre4[np.isnan(dataPre4)] = 255 # # 将nan值替换为255 # 0:01:10.404677 dataPre5 = np.array(dataPre) dataPre5 = np.where(np.isnan(dataPre5), 255, dataPre5) dataPre5 = np.where(np.isinf(dataPre5), 255, dataPre5) 可以看出几种方法的效率差别还是比较大的,尤其是使用了replace或者np.where函数的方法,比较慢。
参考链接:
https://blog.csdn.net/zhao2chen3/article/details/113746841
https://blog.csdn.net/helei001/article/details/53066317
https://blog.csdn.net/Aaron_Zy7/article/details/109054073
https://stackoverflow.com/questions/5124376/convert-nan-value-to-zero
更多推荐
已为社区贡献1条内容
所有评论(0)