我希望能够在维护NaN值的列表上运行numpy命令。基本上,我想对两个列表变量进行线性回归。一个变量包含NaN,因此我无法对其进行线性回归。但是,如果删除NaN值,则列表的大小与不包含NaN的列表的大小不匹配。例如,
x = [1,2,3,4,5,NaN]
如果删除NaN值,则x
的大小将变为5
y = [1,2,3,4,5,6]
y
的大小为6
(x,y)=(1,1),(2,2),(3,3),(4,4),(5,5),(NaN,6)
我希望我的线性回归跳过数据点(NaN,6)
我该怎么做?
答案 0 :(得分:1)
您需要根据条件过滤两个数组,而不仅仅是其中之一。
import numpy as np
x = np.array([1,2,np.NaN,4,5,np.NaN])
y = np.array([1,2,3,4,5,6])
condition = ~np.isnan(x)
xp = x[condition]
yp = y[condition]
print(xp)
print(yp)
所以两个数组都打印为[1 2 4 5]
。
答案 1 :(得分:-1)
这是处理NaN值和字符串的正确答案。
def skipNaN(x, y):
x = np.array(x)
y = np.array(y)
condition1 = np.array([isNumber(i) and isNumber(j) for i,j in zip(x,y)])
x = x[condition1].astype('float64')
y = y[condition1].astype('float64')
condition2 = ~np.isnan(x)
x = x[condition2].astype('float64')
y = y[condition2].astype('float64')
return[x,y]