【问题标题】:Use a more accurate array of x values to generate line of best fit in matplotlib?使用更准确的 x 值数组在 matplotlib 中生成最佳拟合线?
【发布时间】:2018-11-08 16:45:14
【问题描述】:

我目前遇到一个问题,我需要生成一条最佳拟合曲线,我需要使用从 250 到 100 的更精确的 x 数组,以 10 为步长。这是我到目前为止的代码。 .

import numpy as np
from numpy import polyfit, polyval
import matplotlib.pyplot as plt

x = [250,300,350,400,450,500,550,600,700,750,800,900,1000]
x = np.array(x)
y = [0.791, 0.846, 0.895, 0.939, 0.978, 1.014, 1.046, 1.075, 1.102, 1.148, 1.169, 1.204, 1.234]
y= np.array(y)

r = polyfit(x,y,3)
fit = polyval(r, x)

plt.plot(x, fit, 'b')
plt.plot(x,y, color = 'r', marker = 'x')
plt.show()

【问题讨论】:

    标签: python python-3.x numpy matplotlib


    【解决方案1】:

    如果我理解正确,您正在尝试通过 c 的步骤创建从 a 到 b 的数字数组。

    你可以使用纯python:

    list(range(a, b, c)) #in your case list(range(250, 1000, 10))
    

    或者,由于您使用的是 numpy,您可以直接创建 numpy 数组:

    np.arange(a, b, c)
    

    【讨论】:

      【解决方案2】:

      要逐步创建数组,您可以使用numpy.arange([start,] stop[, step])

      import numpy as np
      x = np.arange(250,1000,10)
      

      【讨论】:

      • 我如何生成一条与新的 x 数组最匹配的线,因为 x 中的原始值数量是 13,现在我们得到了 75。
      • 我不知道我是否理解正确:您没有更多的y 数据点,因此无法适应更多x 值?你真的只想plot你的新函数有更多的x值吗?
      • 这个问题也让我很困惑......它说:“绘制 1 阶(直线)、2 阶或 3 阶的最佳曲线拟合以及测量标记(使用numpy 函数 polyfit 和 polyval)。要确定最佳拟合,请评估从 1 到 3 的三个多项式模型。(将 cmets 放入代码中,描述哪个产生最佳拟合。)使用更精细的 x 值列表(250 到 1000 步,每步 10 步)计算 polyfit "
      • 如果y 值是唯一提供的值,这确实是一个非常奇怪的问题。当然,您始终可以 plot 使用更多 x 值,但这不会改变拟合的准确性。
      • 是的,我在我的图形计算器上试过了,但合身度没有任何改变……但我现在知道该怎么做了,哈哈
      【解决方案3】:

      要生成 250-1000 的值,请使用 range(start, stop, step):

      x = range(250,1001,10)
      x = np.array(x)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-27
        • 1970-01-01
        • 2021-07-05
        • 2015-08-14
        • 1970-01-01
        • 2014-09-07
        • 2017-08-24
        相关资源
        最近更新 更多