作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 optimization.curve_fit 来查找两个数组之间的最小二乘解,但我不断收到错误消息:函数调用的结果不是正确的 float 组。我在下面粘贴了我的代码。任何想法如何解决这一问题?谢谢!
import numpy as np
import scipy.optimize as optimization
pcone = np.array([[-0.01043151],
[-0.00135030],
[-0.02566969],
[-0.02822495],
[-0.05463625],
[-0.00969918],
[-0.01332421],
[-0.03364439],
[-0.04009642],
[-0.03556982]])
pctwo = np.array([[0.02550008],
[0.04422852],
[0.06685288],
[0.04751296],
[0.02439405],
[0.09654185],
[0.03161849],
[0.03834721],
[0.01653997],
[-0.00802414]])
def func(x, a, b, c):
return a + b*x + c*x*x
print optimization.curve_fit(func, pcone, pctwo)
最佳答案
您的数组具有形状 (10, 1)。也就是说,它们是二维的,具有微不足道的第二维。在最简单的情况下,curve_fit
需要一维数组。将 pcone
和 pctwo
扁平化为一维数组,然后将它们传递给 curve_fit
。
例如,这是有效的:
In [8]: curve_fit(func, pcone.ravel(), pctwo.ravel())
Out[8]:
(array([ 0.05720879, 0.65281483, -2.67840575]),
array([[ 5.90887090e-04, 4.15822858e-02, 6.14439732e-01],
[ 4.15822858e-02, 4.07354227e+00, 6.94784914e+01],
[ 6.14439732e-01, 6.94784914e+01, 1.29240335e+03]]))
(您还没有展示 pcone
和 pctwo
是如何创建的。首先将它们创建为一维数组可能会更简洁,而不是稍后将它们展平。)
关于numpy - scipy.optimize.curve_fit : not a proper array of floats error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23769508/
我是一名优秀的程序员,十分优秀!