【发布时间】:2014-10-03 10:06:54
【问题描述】:
我有一个尺寸为 (44,36) 的 numpy 数组 (sums_norm),我想用一个已知函数来拟合它的所有行。 (这个问题是已经问过的curve fitting with a known function numpy 的延伸)。我正在使用此代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def func(x,beta,p):
return p/(4.0*np.pi)*(1+beta*(3.0/2*(np.cos(x)*np.cos(x))-1.0/2))
popt = np.zeros(((sums_norm.shape[0]),2))
pcov = np.zeros(((sums_norm.shape[0]),2))
y_fit = np.zeros(((sums_norm.shape[0]),(sums_norm.shape[1])))
for i in range(0,sums_norm.shape[0],1):
guesses = [0.2,5]
popt[i,:],pcov[i,:] = curve_fit(func,angle_plot,sums_norm[i,:],p0=guesses)
y_fit[i,:] = func(angle_plot,*popt)
print popt
但是当我运行它时出现错误:“无法将输入数组从形状 (2,2) 广播到形状 (2)”。我做错了什么? 谢谢你
ValueError Traceback (most recent call last)
<ipython-input-315-cc50a1dcf07b> in <module>()
29 for i in range(0,sums_norm.shape[0],1):
30 guesses = [0.2,5]
---> 31 popt[i,:],pcov[i,:] = curve_fit(func,angle_plot,sums_norm[i,:],p0=guesses)
32 y_fit[i,:] = func(angle_plot,*popt)
ValueError: 无法将输入数组从形状 (2,2) 广播到形状 (2)
【问题讨论】:
-
您能否发布错误出现在哪一行
-
@ThePredator 请查看编辑
-
Stack Overflow 上其他十几个“无法广播”问题的可能重复
标签: python arrays numpy curve-fitting