Tag: scipy

用给定的均值计算正态分布的概率,标准偏差为Python

如何计算正态分布的概率给定的意思,标准为Python? 在这个问题中,我可以根据定义像OP那样定义自己的函数: 计算Python中的随机variables的概率 只是想知道是否有一个库函数调用将允许你这样做。 在我的想象中会这样: nd = NormalDistribution(mu=100, std=12) p = nd.prob(98) 在Perl中有一个类似的问题: 我怎样才能计算一个给定在Perl正常分布点的概率? 。 但我没有看到一个在Python中。 Numpy有一个random.normal函数,但它像抽样,不完全是我想要的。

Scipy稀疏…数组?

所以,我正在做一些Kmeans分类,使用非常稀疏的numpy数组 – 很多很多的零。 我想我会使用scipy的'稀疏'包来减less存储开销,但我有点困惑如何创build数组,而不是matrix。 我已经通过本教程了解如何创build稀疏matrix: http : //www.scipy.org/SciPy_Tutorial#head-c60163f2fd2bab79edd94be43682414f18b90df7 为了模仿一个数组,我只是创build一个1xN的matrix,但正如你所猜测的,Asp.dot(Bsp)不能很好地工作,因为你不能乘以两个1xNmatrix。 我不得不将每个数组转换为Nx1,这是非常蹩脚的,因为我会为每个点积计算。 接下来,我尝试创build一个NxNmatrix,其中第1行==第1行(这样您可以乘以两个matrix,只需将左上angular作为点乘积),但事实certificate效率并不高。 我喜欢使用scipy的稀疏包作为numpy的数组()的魔术替代品,但是到目前为止,我并不确定该怎么做。 有什么build议?

计算不规则间隔点密度的有效方法

我正在尝试生成地图叠加图像,以帮助识别热点,即地图上具有高密度数据点的区域。 我所尝试的方法都不足以满足我的需求。 注意:我忘记提及algorithm在低和高缩放情况(或低和高数据点密度)下都能正常工作。 我通过numpy,pyplot和scipy库来查看,最接近我能find的是numpy.histogram2d。 正如你在下面的图片中看到的,histogram2d的输出是比较粗糙的。 (每个图像包含覆盖热图的点以便更好地理解) 我的第二个尝试是迭代所有的数据点,然后计算热点值作为距离的函数。 这产生了一个更好看的形象,但它在我的应用程序中使用太慢。 由于它是O(n),所以它可以正常工作100点,但是当我使用我的30000点的实际数据集时会发生。 我最后的尝试是将数据存储在KDTree中,并使用最近的5个点来计算热点值。 这个algorithm是O(1),大数据集要快得多。 它还不够快,生成256×256位图需要大约20秒,我希望在1秒左右的时间内完成。 编辑 由6502提供的boxsum平滑解决scheme在所有缩放级别都能正常运行,比我的原始方法快得多。 Luke和Neil G提出的高斯滤波器解决scheme是最快的。 您可以看到下面的所有四种方法,总共使用1000个数据点,在3倍缩放下,大约有60个点可见。 完整的代码,生成我原来的3次尝试,6502提供boxsum平滑解决scheme和卢克build议的高斯filter(改进处理边缘更好,允许放大)在这里: import matplotlib import numpy as np from matplotlib.mlab import griddata import matplotlib.cm as cm import matplotlib.pyplot as plt import math from scipy.spatial import KDTree import time import scipy.ndimage as ndi def grid_density_kdtree(xl, yl, xi, yi, dfactor): zz […]

如何通过广播密集的1d数组元素乘以一个scipy.sparsematrix?

假设我有一个2d稀疏数组。 在我真正的用例中,行和列的数量都要大得多(比如20000和50000),因此当使用密集表示法时,它不能适应内存: >>> import numpy as np >>> import scipy.sparse as ssp >>> a = ssp.lil_matrix((5, 3)) >>> a[1, 2] = -1 >>> a[4, 1] = 2 >>> a.todense() matrix([[ 0., 0., 0.], [ 0., 0., -1.], [ 0., 0., 0.], [ 0., 0., 0.], [ 0., 2., 0.]]) 现在假设我有一个密度为1d的数组,其大小为3的所有非零元素(在我的现实生活中是50000): >>> d = np.ones(3) * […]

如何用Scipy.signal.butter实现带通Butterworth滤波器

更新: 令我惊讶的是,在差不多两年后的同一个话题中,我find了一个基于这个问题的“Scipy食谱”! 所以,对于任何感兴趣的人,请直接去: http://wiki.scipy.org/Cookbook/ButterworthBandpass 我很难达到最初实现用于一维numpyarrays(时间序列)的Butterworth带通滤波器的简单任务。 我必须包括的参数是sample_rate,截止频率IN HERTZ和可能的顺序(其他参数,如衰减,固有频率等对我来说比较晦涩,所以任何“默认”值都可以)。 我现在拥有的是这个,它似乎是一个高通滤波器,但我无法确定,如果我正确地做到这一点: def butter_highpass(interval, sampling_rate, cutoff, order=5): nyq = sampling_rate * 0.5 stopfreq = float(cutoff) cornerfreq = 0.4 * stopfreq # (?) ws = cornerfreq/nyq wp = stopfreq/nyq # for bandpass: # wp = [0.2, 0.5], ws = [0.1, 0.6] N, wn = scipy.signal.buttord(wp, ws, 3, 16) # (?) […]

在SciPy中创build低通滤波器 – 理解方法和单位

我想用python过滤嘈杂的心率信号。 因为心率不应该是每分钟220次左右,所以我想过滤220bpm以上的所有噪音。 我把220 /分钟转换成3.66666666赫兹,然后把赫兹转换成rad / s,得到23.0383461 rad / sec。 取数据的芯片的采样频率是30Hz,所以我把它转换为rad / s得到188.495559rad / s。 在网上查了一些东西之后,我发现了一些带通滤波器,我想把它们变成低通滤波器。 这里是带通码的链接 ,所以我把它转换成这样: from scipy.signal import butter, lfilter from scipy.signal import freqs def butter_lowpass(cutOff, fs, order=5): nyq = 0.5 * fs normalCutoff = cutOff / nyq b, a = butter(order, normalCutoff, btype='low', analog = True) return b, a def butter_lowpass_filter(data, cutOff, […]

numpy.fft和scipy.fftpack有什么区别?

后者只是前者的同义词,还是两种不同的FFT实现? 哪一个更好?

matplotlib – 从等高线中提取数据

我想从均匀间隔的2D数据的单个轮廓(类似图像的数据)获取数据。 基于类似问题中find的示例: 如何获得由等值线图(matplotlib)绘制的线的(x,y)值? >>> import matplotlib.pyplot as plt >>> x = [1,2,3,4] >>> y = [1,2,3,4] >>> m = [[15,14,13,12],[14,12,10,8],[13,10,7,4],[12,8,4,0]] >>> cs = plt.contour(x,y,m, [9.5]) >>> cs.collections[0].get_paths() 调用cs.collections[0].get_paths()是: [Path([[ 4. 1.625 ] [ 3.25 2. ] [ 3. 2.16666667] [ 2.16666667 3. ] [ 2. 3.25 ] [ 1.625 4. ]], None)] 根据这些图,这个结果是合理的,似乎是轮廓线的(y,x)对的集合。 除了手动循环这个返回值,提取坐标并为线组装数组,还有更好的方法从matplotlib.path对象中获取数据吗? 从matplotlib.path提取数据时是否存在缺陷? […]

Python的networking托pipe:Numpy,Matplotlib,科学计算

我在Numpy / Scipy / Matplotlib中编写科学软件。 在家用电脑上开发了应用程序之后,我现在对编写简单的Web应用程序感兴趣。 例如:用户上传图片或audio文件,我的程序使用Numpy / Scipy进行处理,使用Matplotlib在浏览器上显示输出,或者用户可以下载处理的文件。 我已经支付了安装了Python 2.4.3的主机,但没有Numpy / Scipy。 我没有通过命令行访问shell。 只需拖放FTP即可。 相当有限,但我可以得到简单的Python / CGI脚本工作。 令人惊讶的是,一个networkingsearch发现了几个适当的networking托pipe选项,这些function已经内置(请指导我,如果我错了)。我正在学习谷歌应用程序引擎,但我还没有完全了解其工具和限制。 networking告诉我的是,其他人也有类似的担忧。 希望能find解决办法,我想我会问这些简单的问题到真棒社区: 有没有简单的方法安装numpy(或任何第三方包/库)到我已经托pipe的空间? 我知道我的托pipe空间的Pythonpath,我知道我的家用电脑上的相关的Python / Numpy目录。 我可以简单地复制文件,并使其工作? 本地和远程系统都运行Ubuntu。 哪些托pipe网站存在(免费或付费)有Numpy / Matplotlib安装,或者,如果没有安装,安装它的可能性? 是否有任何logging的网站,您可以参考工作申请,无论多么简单? Google App Engine可以以任何方式帮助我吗? 还是完全是为了别的? 你或其他人是否用Python / Numpy编写了科学应用程序? 如果是这样,你可以参考吗? 感谢您的帮助。 编辑:在下面的有用答案后,我买了Slicehost 20美元的计划,我爱它到目前为止! (我第一次尝试亚马逊EC2,我一定很愚蠢,但是我却无法工作。)用Apache设置Ubuntu服务器只花了几个小时(而且我是一个Apache新手)。 它使我可以用Python来做更多的事情。 我现在也有自己的版本控制远程存储库。 再次感谢! 编辑2:近两年后,我试了Linode和EC2(再次)。 Linode很棒。 EC2似乎更容易一些 – 也许这只是增加了经验,或者也许是亚马逊对AWSpipe理控制台的改进。 对于那些对Numpy / Scipy / […]

防止matplotlib中imshow的消除锯齿

当我使用matplotlib的imshow()方法来表示一个小的numpymatrix时,它最终会在像素之间做一些平滑处理。 有什么办法来禁用这个? 这使我的形象在演讲中误导。 上图是一个28×28的图像,所以我应该看到代表每个像素的单一颜色的大方块(如matlab在使用imagesc()时显示的那样)。 但相反,像素似乎与相邻的像素模糊。 有没有办法来禁用这种行为?