您可以使用快速傅立叶变换(FFT)有效地计算所有PDF的卷积:关键事实是,FFT of the convolution是单个概率密度函数FFT的乘积。因此,转换每个PDF,将转换后的PDF相乘,然后执行逆变换。您需要用0填充每个输入PDF到适当的长度,以避免换行的影响。在

这应该是相当有效的:如果您有m个pdf,每个pdf都包含n个条目,那么使用此方法计算卷积的时间应该增长为(m^2)n log(mn)。时间由fft控制,我们有效地计算m + 1独立的fft(m正变换和一个逆变换),每个fft的长度不超过mn。但和往常一样,如果你想要真正的时间安排,你就应该进行分析。在

下面是一些代码:import numpy.fft

def convolve_many(arrays):

"""

Convolve a list of 1d float arrays together, using FFTs.

The arrays need not have the same length, but each array should

have length at least 1.

"""

result_length = 1 + sum((len(array) - 1) for array in arrays)

# Copy each array into a 2d array of the appropriate shape.

rows = numpy.zeros((len(arrays), result_length))

for i, array in enumerate(arrays):

rows[i, :len(array)] = array

# Transform, take the product, and do the inverse transform

# to get the convolution.

fft_of_rows = numpy.fft.fft(rows)

fft_of_convolution = fft_of_rows.prod(axis=0)

convolution = numpy.fft.ifft(fft_of_convolution)

# Assuming real inputs, the imaginary part of the output can

# be ignored.

return convolution.real

把这个应用到你的例子中,我得到的结果是:

^{pr2}$

这是基本的想法。如果您想对此进行调整,还可以看看^{}(及其逆函数,^{}),它利用了输入是实的这一事实,从而生成更紧凑的变换数组。您还可以通过在rows数组中填充0来获得一些速度,这样列的总数对于执行FFT是最佳的。这里“最优”的定义将取决于FFT的实现,但是例如,2的幂次是很好的目标。最后,在创建rows时,如果所有的输入数组都具有相同的长度,可以进行一些明显的简化。但我将把这些潜在的改进留给你。在

python概率密度函数_Python中概率密度函数的快速卷积相关推荐

  1. python绘制概率密度曲线_python添加概率密度曲线-女性时尚流行美容健康娱乐mv-ida网...

    自动秒收录 如何加入 (当前页) 购买本站源码 自媒体交流 查询是否收录 查询收录 × 快速加入 只要做上本站的友情链接,并在您站上点击一次,就免人工自动收录!并自动排在本站第一位. 本站已收录286 ...

  2. python加权随机_Python中的加权随机

    我们平时比较多会遇到的一种情景是从一堆的数据中随机选择一个, 大多数我们使用random就够了, 但是假如我们要选取的这堆数据分别有自己的权重, 也就是他们被选择的概率是不一样的, 在这种情况下, 就 ...

  3. 如何使用java编程算概率_游戏中概率的编程实现(转之别人)最简单的

    概率 听起来很玄 比如洗法宝 太一石 有一段说明 有一定概率 能改变法宝的技能阶数 那么 概率在编程中如何实现的呢 个人在大学里有学c++ java 以及vb 现以vb实现概率来说明 首先,要先说清楚 ...

  4. python map用法_Python中ChainMap的一种实用用法

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 简而言之ChainMap:将多个字典视为一个,解锁Python超能力. Python标准库中的集合模块包含 ...

  5. python基本统计量_Python中简单统计量的计算

    本篇文章给大家带来的内容是关于Python中简单统计量的计算,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1.这些操作都要确保已经在电脑中安装好了Anaconda集成库,如果安装好 ...

  6. python解析原理_Python 中 -m 的典型用法、原理解析与发展演变

    在命令行中使用 Python 时,它可以接收大约 20 个选项(option),语法格式如下: python [-bBdEhiIOqsSuvVWx?] [-c command | -m module- ...

  7. python正则表达式空格_python中的正则表达式的使用

    一.正则表达式简介 正则表达式:又称正规表示式.正规表示法.正规表达式.规则表示式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或者是RE),是计算 ...

  8. python wraps模块_python中 wraps 的作用

    这里使用两段代码比较加入wraps装饰器后,函数打印的结果对比: 新建文件名:Testword 代码1:不加wraps装饰器 # coding=utf-8 from functools import ...

  9. 用python输出数组_Python 中输出数组中的全部元素

    只需要在开头加上一句即可 import numpy as np np.set_printoptions(threshold=np.inf) Python 输出到文本中 参考:https://blog. ...

最新文章

  1. 计算机专业大二分方向,该选择人工智能还是网络安全
  2. Ubuntu系统的安装
  3. mysql数据库5120_超傻瓜 H3C S5120 限速配置
  4. vue.js中mock本地json数据
  5. 【渝粤教育】国家开放大学2018年秋季 1021t劳动与社会保障法 参考试题
  6. 《UNIX环境高级编程》目录
  7. 漫话:什么是云计算?
  8. 【BZOJ-3123】森林 主席树 + 启发式合并
  9. Android租赁源码,AndroidUS六仔源码出租的配置文件操作封装
  10. PHP+Mysql高并发解决方案
  11. vs中opencv配置
  12. 现代支付系统的资金流向
  13. 如何选择一款程序员理想中的显示器
  14. infopath2007-2013直接连接数据源(Access或Sqlserver)设计表单模板
  15. 利用Matplotlib绘制各类图表
  16. 服务器改了密码 网页打不开了,为什么用户中心里的修改密码网页打不开
  17. TypeError: torch.nn.modules.batchnorm.BatchNorm2d is not a Module subclass
  18. c#如何wmf图片转换成png图片_【C#】使用fo-dicom完成BMP,JPG,PNG图片转换为DICOM文件-阿里云开发者社区...
  19. JM模型I帧帧内预测流程
  20. 科普读书会丨《被讨厌的勇气》:愤怒不是目的,是一种工具

热门文章

  1. 【AngularJs】获取URL查询参数
  2. 《javascript高级程序设计》笔记:变量对象与预解析
  3. CES中国企业被查抄案最新进展:美公司主动撤诉
  4. 【原】Java学习笔记030 - 异常
  5. php 上传文件实例 注册账号
  6. js学习笔记1---使用方法
  7. php BC高精确度函数库
  8. [Java] 初始化与清理
  9. freemarker 读取字符串模板,(非文件)
  10. jsp访问WEB-INF下面的资源