【问题标题】:fit along one dimension of numpy array适合 numpy 数组的一维
【发布时间】: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


【解决方案1】:

我用一些随机数据修改了你的代码,你需要创建pcov,形状为(44, 2, 2)

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

sums_norm = np.random.rand(44, 36)
angle_plot = np.random.rand(36)

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, 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[i,:])

print popt

【讨论】:

    猜你喜欢
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    • 2020-03-25
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多