Python 通过曲线拟合循环,如何跳过空数据?

Python 通过曲线拟合循环,如何跳过空数据?,python,curve-fitting,Python,Curve Fitting,我在4个3D数组中循环,从中获取ydata,并将其传递到曲线拟合函数中。我正在绘制数据的日志,我得到了大量的nan和inf。我使用了一个掩码来过滤ydata集,但是由于数据为空,我遇到了一个错误。如何传递这样的空数据集 我的代码是 xdata_1000 = np.array([50,300,600,1000]) for i in range(n): for r in range(d): for c in range(d): b50_value =

我在4个3D数组中循环,从中获取ydata,并将其传递到曲线拟合函数中。我正在绘制数据的日志,我得到了大量的nan和inf。我使用了一个掩码来过滤ydata集,但是由于数据为空,我遇到了一个错误。如何传递这样的空数据集

我的代码是

xdata_1000 = np.array([50,300,600,1000])

for i in range(n):
    for r in range(d):
        for c in range(d):
            b50_value = round(b50_data[i,r,c],4)
            b300_value = round(b300_data[i,r,c],4)
            b600_value = round(b600_data[i,r,c],4)
            b1000_value = round(b1000_data[i,r,c],4)

            ydata_fit1 = np.array([b50_value, b300_value, b600_value, b1000_value])
            ydata_fit1 = np.log(ydata_fit1 / ydata_fit1[0])
            index1 = ~np.isnan(ydata_fit1)

            def fit(x,a_slope,b_intercept):
                return a_slope * x + b_intercept


            popt1, pcov1 = curve_fit(fit, xdata_1000, ydata_fit1[index1])
            popt1[0] = popt1[0] * 1000
            ADC_50_300_600_1000[i,r,c] = popt1[0]
没有面具,我会

[nan nan nan nan]
而使用它时,数据是空的

[]

请将缺少的导入语句添加到代码中,好吗?此外,“n”等变量也未定义。如果数据本身具有inf和nan值,则可以使用numpy.isfinite()过滤掉这些值。