我正致力于在scipy中拟合三维分布函数。我有一个numpy数组,在x和y-bin中有计数,我正试图将其与一个相当复杂的三维分布函数相匹配。数据适合26(!)描述其两个组成种群形状的参数。

我在这里了解到,当我调用leatsq时,必须将x和y坐标作为“args”传递。unutbu提供的代码是为我编写的,但是当我试图将其应用于我的特定情况时,会出现错误“TypeError:leastsq()为关键字参数“args”获取多个值”

这是我的代码(对不起,长度太长了):import numpy as np

import matplotlib.pyplot as plt

import scipy.optimize as spopt

from textwrap import wrap

import collections

cl = 0.5

ch = 3.5

rl = -23.5

rh = -18.5

mbins = 10

cbins = 10

def hist_data(mixed_data, mbins, cbins):

import numpy as np

H, xedges, yedges = np.histogram2d(mixed_data[:,1], mixed_data[:,2], bins = (mbins, cbins), weights = mixed_data[:,3])

x, y = 0.5 * (xedges[:-1] + xedges[1:]), 0.5 * (yedges[:-1] + yedges[1:])

return H.T, x, y

def gauss(x, s, mu, a):

import numpy as np

return a * np.exp(-((x - mu)**2. / (2. * s**2.)))

def tanhlin(x, p0, p1, q0, q1, q2):

import numpy as np

return p0 + p1 * (x + 20.) + q0 * np.tanh((x - q1)/q2)

def func3d(p, x, y):

import numpy as np

from sys import exit

rsp0, rsp1, rsq0, rsq1, rsq2, rmp0, rmp1, rmq0, rmq1, rmq2, rs, rm, ra, bsp0, bsp1, bsq0, bsq1, bsq2, bmp0, bmp1, bmq0, bmq1, bmq2, bs, bm, ba = p

x, y = np.meshgrid(coords[0], coords[1])

rs = tanhlin(x, rsp0, rsp1, rsq0, rsq1, rsq2)

rm = tanhlin(x, rmp0, rmp1, rmq0, rmq1, rmq2)

ra = schechter(x, rap, raa, ram) # unused

bs = tanhlin(x, bsp0, bsp1, bsq0, bsq1, bsq2)

bm = tanhlin(x, bmp0, bmp1, bmq0, bmq1, bmq2)

ba = schechter(x, bap, baa, bam) # unused

red_dist = ra / (rs * np.sqrt(2 * np.pi)) * gauss(y, rs, rm, ra)

blue_dist = ba / (bs * np.sqrt(2 * np.pi)) * gauss(y, bs, bm, ba)

result = red_dist + blue_dist

return result

def residual(p, coords, data):

import numpy as np

model = func3d(p, coords)

res = (model.flatten() - data.flatten())

# can put parameter restrictions in here

return res

def poiss_err(data):

import numpy as np

return np.where(np.sqrt(H) > 0., np.sqrt(H), 2.)

# =====

H, x, y = hist_data(mixed_data, mbins, cbins)

data = H

coords = x, y

# x and y will be the projected coordinates of the data H onto the plane z = 0

# x has bins of width 0.5, with centers at -23.25, -22.75, ... , -19.25, -18.75

# y has bins of width 0.3, with centers at 0.65, 0.95, ... , 3.05, 3.35

Param = collections.namedtuple('Param', 'rsp0 rsp1 rsq0 rsq1 rsq2 rmp0 rmp1 rmq0 rmq1 rmq2 rs rm ra bsp0 bsp1 bsq0 bsq1 bsq2 bmp0 bmp1 bmq0 bmq1 bmq2 bs bm ba')

p_guess = Param(rsp0 = 0.152, rsp1 = 0.008, rsq0 = 0.044, rsq1 = -19.91, rsq2 = 0.94, rmp0 = 2.279, rmp1 = -0.037, rmq0 = -0.108, rmq1 = -19.81, rmq2 = 0.96, rs = 1., rm = -20.5, ra = 10000., bsp0 = 0.298, bsp1 = 0.014, bsq0 = -0.067, bsq1 = -19.90, bsq2 = 0.58, bmp0 = 1.790, bmp1 = -0.053, bmq0 = -0.363, bmq1 = -20.75, bmq2 = 1.12, bs = 1., bm = -20., ba = 2000.)

opt, cov, infodict, mesg, ier = spopt.leastsq(residual, p_guess, poiss_err(H), args = coords, maxfev = 100000, full_output = True)

这是我的数据,只有更少的箱子:[[ 1.00000000e+01 1.10000000e+01 2.10000000e+01 1.90000000e+01

1.70000000e+01 2.10000000e+01 2.40000000e+01 1.90000000e+01

2.80000000e+01 1.90000000e+01]

[ 1.40000000e+01 4.50000000e+01 6.00000000e+01 6.80000000e+01

1.34000000e+02 1.97000000e+02 2.23000000e+02 2.90000000e+02

3.23000000e+02 3.03000000e+02]

[ 3.00000000e+01 1.17000000e+02 3.78000000e+02 9.74000000e+02

1.71900000e+03 2.27700000e+03 2.39000000e+03 2.25500000e+03

1.85600000e+03 1.31000000e+03]

[ 1.52000000e+02 9.32000000e+02 2.89000000e+03 5.23800000e+03

6.66200000e+03 6.19100000e+03 4.54900000e+03 3.14600000e+03

2.09000000e+03 1.33800000e+03]

[ 5.39000000e+02 2.58100000e+03 6.51300000e+03 8.89900000e+03

8.52900000e+03 6.22900000e+03 3.55000000e+03 2.14300000e+03

1.19000000e+03 6.92000000e+02]

[ 1.49600000e+03 4.49200000e+03 8.77200000e+03 1.07610000e+04

9.76700000e+03 7.04900000e+03 4.23200000e+03 2.47200000e+03

1.41500000e+03 7.02000000e+02]

[ 2.31800000e+03 7.01500000e+03 1.28870000e+04 1.50840000e+04

1.35590000e+04 8.55600000e+03 4.15600000e+03 1.77100000e+03

6.57000000e+02 2.55000000e+02]

[ 1.57500000e+03 3.79300000e+03 5.20900000e+03 4.77800000e+03

3.26600000e+03 1.44700000e+03 5.31000000e+02 1.85000000e+02

9.30000000e+01 4.90000000e+01]

[ 7.01000000e+02 1.21600000e+03 1.17600000e+03 7.93000000e+02

4.79000000e+02 2.02000000e+02 8.80000000e+01 3.90000000e+01

2.30000000e+01 1.90000000e+01]

[ 2.93000000e+02 3.93000000e+02 2.90000000e+02 1.97000000e+02

1.18000000e+02 6.40000000e+01 4.10000000e+01 1.20000000e+01

1.10000000e+01 4.00000000e+00]]

非常感谢!

python 三维曲线拟合_基于三维数据和参数的Scipy曲线拟合相关推荐

  1. python应用内部审计_基于大数据技术提升内部审计质量的路径

    龙源期刊网 http://www.qikan.com.cn 基于大数据技术提升内部审计质量的路径 作者:彭德锦 方智 来源:<中国内部审计> 2019 年第 07 期 [ 摘要 ] 随着大 ...

  2. 基于python的步态分析_基于Python的步态周期及三维肢体活动角度算法的制作方法...

    本发明涉及一种三维肢体活动角度算法,特别是涉及一种基于Python的步态周期及三维肢体活动角度算法. 背景技术: 肢体活动角度(ROM,Range of Motion)是指人体在运动时的肢体活动范围, ...

  3. 基于python的步态分析_基于Python的步态周期及三维肢体活动角度算法_2017108489397_说明书_专利查询_专利网_钻瓜专利网...

    技术领域 本发明涉及一种三维肢体活动角度算法,特别是涉及一种基于Python的步态周期及三维肢体活动角度算法. 背景技术 肢体活动角度(ROM,Range of Motion)是指人体在运动时的肢体活 ...

  4. 线性八叉树_基于三维点云数据的线性八叉树编码压缩算法(权毓舒, 何明一,).pdf...

    基于三维点云数据的线性八叉树编码压缩算法(权毓舒, 何明一,) ·70 · 计算机应用研究 2005 年 基于三维点云数据的线性八叉树编码压缩算法 * 权毓舒, 何明一 ( 西北工业大学 电子信息学院 ...

  5. 三维点云数据处理软件供技术原理说明_基于三维点云处理技术的工件识别和匹配...

    1. 引言 目前,随着自动化程度的提高,机器人导航.工业零件检测及抓取等众多领域对计算机视觉系统的要求越来越高 [1],基于二维图像的物体识别已经无法满足日常作业的需求.而由于三维扫描技术的发展,结构 ...

  6. 三维点云数据处理软件供技术原理说明_基于三维激光扫描的粮仓储量测量中点云数据处理技术的研究...

    内容简介: 基于三维激光扫描的粮仓储量测量中点云数据处理技术的研究,毕业论文,共74页,30308字. 内容摘要 三维激光扫描仪(又称"激光雷达")能够快速.有效地获取空间点的三维 ...

  7. 时间序列python复杂网络实例_基于时间序列数据的复杂网络重构

    摘要:现实生活中,复杂系统俯首即是,和人们的生活息息相关,遍及的领域包括社会,经济,物理,生物和生态等.为了便于研究,复杂网络通常被看成是复杂系统的一种抽象描述,其中,网络中的单个节点对应于系统中的单 ...

  8. python 建筑建模_基于CityEngine的建筑物自动化建模

    近年来, 全国很多城市都在进行数字城市建设, 推进城市信息化进程[.数字城市是运用3S.遥测.仿真-虚拟等技术,以计算机技术.多媒体技术和大规模存储技术为基础,以宽带网络为纽带,实现对城市多尺度.多时 ...

  9. 大数据文字游戏_基于大数据的游戏化教学系统研究.docx

    基于大数据的游戏化教学系统研究 ―.引言 目前,我国高校在线开放课程的建设已经取得了较大的发展,在线课程的使用已经使高 校教学发生了巨大的变化.课程的网络资源可以作为延伸课堂教学的工具,有效减轻了课堂 ...

最新文章

  1. LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍
  2. 苗旺:因果推断,观察性研究和 2021 年诺贝尔经济学奖 | 青源 Talk 第 8 期
  3. c++ 遍历所有点且距离最短_L3图论第08课 图的遍历
  4. python必学_Python必学框架
  5. python爬虫实训日志_Python学习学习日志——爬虫《第一篇》(BeautifulSoup)
  6. 个人觉的不错的文章[来自CSDN]
  7. 数据分析师mysql基础_数据分析师之mysql入门——数据检索
  8. Java的静态数组和动态数组
  9. java nio wakeup_Java NIO 的 wakeup 剖析
  10. 关于HTML系统学习(1)
  11. 抖音python广告用的什么音乐_被抖音捧火的几首纯音乐,都是你们要的原版,太震撼人心!...
  12. 搜索开启WPS功能的路由wash
  13. 角色游戏二(NPC对话)
  14. 10月14日科技资讯|华为折叠屏手机月底或开卖;苹果计划 3 年内推出 5G 基带芯片;Node.js 12.12.0 发布 | 极客头条
  15. 1万字精讲,这你还学不废?Python爬取腾讯视频《斛珠夫人》弹幕,并转换成词云(单线程)——爬虫实例2
  16. JSP书香味道点餐系统课设
  17. 淘宝运营 钻展、智钻的定义 优势所在
  18. 晨山资本王志飏:万物智联时代,智能企业的创新路径
  19. Ubuntu18.04和win10双系统完美安装(dell笔记本电脑)
  20. CH(NH2)2PbBr3(FAPbBr3) 甲脒溴基钙钛矿 1008105-17-6

热门文章

  1. 经典面试题(45):以下代码将输出的结果是什么?
  2. HTML5 API详解(9):大家都知道的 localStorage 本地存储
  3. 地址已在使用 java_java – UDP地址已经在使用?
  4. 基于Flume的美团日志收集系统-----架构和设计
  5. thinkpad卡在logo界面_四大系列 一个品牌,超好用的商务伴侣Thinkpad
  6. Nature methods | Alevin-fry, 一种高效准确的单细胞测序数据预处理工具
  7. 高通量数据中批次效应的鉴定和处理(六)- 直接校正表达矩阵
  8. xming+putty在windows下远程linux主机图形界面程序及putty乱码解决
  9. Adobe Camera Raw13 for mac(PS Raw增效工具)支持M1
  10. P1616 疯狂的采药(python3实现)--80分