Tag: scipy

如何显示在matplotlib mplot3D或类似的三维arrays等值面的三维图?

我有一个三维numpy数组。 我想要显示(在matplotlib中)这个数组的等值面(或者更严格的说是通过在样本点之间进行插值定义的3D标量场的等值面)的一个很好的三维图。 matplotlib的mplot3D部分提供了很好的三维绘图支持,但是(据我所知),它的API没有任何东西,只需要一个标量值的三维数组并显示一个等值面。 但是,它支持显示多边形的集合,所以大概我可以实现进行立方体algorithm来生成这样的多边形。 这似乎很可能是一个友好的步操立方体已经在某处实施,我还没有find它,或者我错过了一个简单的方法来做到这一点。 另外,我会欢迎任何指向其他工具,可视化的3D数组数据可以从Python / numpy / scipy世界轻松使用。

如何检查numpy / scipy中的blas / lapack链接?

基于这个步骤,我基于blas和lapack来或多或less地构build了我的numpy / scipy环境。 当我完成后,我该如何检查,我的numpy / scipy函数是否确实使用了先前构build的blas / lapackfunction?

在python中绘制数据matrix顶部的层次聚类结果

我怎样才能在一个matrix的值之上绘制一个树形图,在Python中恰当地重新sorting以反映聚类? 下图是一个例子: https://publishing-cdn.elifesciences.org/07103/elife-07103-fig6-figsupp1-v2.jpg 我使用scipy.cluster.dendrogram来制作我的树形图并对数据matrix执行分层聚类。 那么我怎样才能把数据绘制成一个matrix,在这个matrix中,行被重新sorting,以反映在特定阈值下切割树形图引起的聚类,并将树形图与matrix一起绘制? 我知道如何在scipy中绘制树形图,但不知道如何用右边的比例尺来绘制数据的强度matrix。 任何帮助,将不胜感激。

在64位Windows上安装NumPy和SciPy(使用Pip)

我发现通过安装程序在Windows 64位上安装NumPy / SciPy是不可能的,这只能在32位上进行。 因为我需要比32位安装给我更多的内存,所以我需要64位版本的一切。 我试图通过Pip安装所有东西,而且大部分工作都正常。 但是当我来到SciPy时,它抱怨错过了一个Fortran编译器。 所以我通过MinGW / MSYS安装Fortran。 但是你不能马上安装SciPy,你需要重新安装NumPy。 所以我尝试了,但现在不再通过Pip工作,也没有通过easy_install 。 两个都给这些错误: 关于LNK2019和LNK1120有很多错误。 我在C : C2065, C2054 , C2085 , C2143等范围内发现了很多错误。 没有findFortran链接器,但我不知道如何安装,找不到任何东西。 还有更多的错误已经超出了我的cmd窗口的可见部分… 致命的错误是关于LNK1120 : 生成\ lib.win-amd64-2.7 \ numpy \ linalg \ lapack_lite.pyd:致命错误LNK1120:7无法parsing的外部错误:安装程序脚本退出时出现错误:命令“C:\ Users \ me \ AppData \ Local \ Programs \ Common \ Microsoft \ Visual C ++ for Python \ […]

Python(NumPy,SciPy),find一个matrix的零空间

我试图find给定matrix的零空间(Ax = 0的解空间)。 我find了两个例子,但我似乎无法得到任何工作。 而且,我不明白他们在做什么,所以我不能debugging。 我希望有人能够通过这个来引导我。 文档页面( numpy.linalg.svd和numpy.compress )对我来说是不透明的。 我学会了通过创buildmatrixC = [A|0]来做到这一点,find缩小的行梯forms并逐行求解variables。 我似乎无法仿效这些例子中的做法。 感谢您的帮助! 这里是我的示例matrix,它与维基百科示例相同: A = matrix([ [2,3,5], [-4,2,3] ]) 方法( 在这里和这里 find ): import scipy from scipy import linalg, matrixr def null(A, eps=1e-15): u, s, vh = scipy.linalg.svd(A) null_mask = (s <= eps) null_space = scipy.compress(null_mask, vh, axis=0) return scipy.transpose(null_space) 当我尝试它时,我得到一个空matrix: Python 2.6.6 […]

我怎样才能有效地处理类似于Matlab的blkproc(blockproc)函数块的numpy数组

我正在寻找一种有效的方法,将图像有效地分割成小区域,分别处理每个区域,然后将每个进程的结果重新组合为单个处理后的图像。 Matlab有一个叫做blkproc的工具(在Matlab的新版本中由blockproc取代)。 在一个理想的世界中,函数或类也会支持inputmatrix中各个分区之间的重叠。 在Matlab帮助中,blkproc被定义为: B = blkproc(A,[mn],[mborder nborder],好玩,…) A是你的inputmatrix, [mn]是块大小 [mborder,nborder]是你的边界区域的大小(可选) 乐趣是适用于每个块的function 我曾经在一起讨论过一个方法,但是它让我觉得很笨拙,我敢打赌还有更好的办法。 冒着我自己的尴尬风险,这是我的代码: import numpy as np def segmented_process(M, blk_size=(16,16), overlap=(0,0), fun=None): rows = [] for i in range(0, M.shape[0], blk_size[0]): cols = [] for j in range(0, M.shape[1], blk_size[1]): cols.append(fun(M[i:i+blk_size[0], j:j+blk_size[1]])) rows.append(np.concatenate(cols, axis=1)) return np.concatenate(rows, axis=0) R = np.random.rand(128,128) passthrough = lambda(x):x Rprime […]

在Cython中调用点积和线性代数运算?

我正在尝试使用点积,matrix求逆和其他基本的线性代数运算,这些运算可以从Cython的numpy中获得。 函数如numpy.linalg.inv (反转), numpy.dot (点积), Xt (matrix/数组的转置)。 调用numpy.*有很大的开销,从Cython函数和其余的函数是用Cython编写的,所以我想避免这种情况。 如果我假设用户安装了numpy ,有没有办法做到这样的事情: #include "numpy/npy_math.h" 作为一个extern ,并且调用这些函数? 或者直接调用BLAS(或者是这些核心操作的numpy调用)? 举一个例子,假设你在Cython中有一个函数做很多事情,最后需要做一个包含点积和matrix求逆的计算: cdef myfunc(…): # … do many things faster than Python could # … # compute one value using dot products and inv # without using # import numpy as np # np.* val = gammaln(sum(v)) – sum(gammaln(v)) + dot((v […]

如何用Python解决一对非线性方程?

使用Python解决一对非线性方程式的(最佳)方法是什么? (Numpy,Scipy或Sympy) 例如: x + y ^ 2 = 4 e ^ x + xy = 3 解决上述问题的代码片段会很好

scipy.stats中的所有可用分布是什么样的?

可视化scipy.stats分布 直方图可以由scipy.stats正态随机variables组成 ,看看分布是什么样的。 % matplotlib inline import pandas as pd import scipy.stats as stats d = stats.norm() rv = d.rvs(100000) pd.Series(rv).hist(bins=32, normed=True) 其他分布是什么样的?

如何使scipy.interpolate给出超出input范围的外推结果?

我试图移植一个使用手动内插器(由math家同事开发)的程序来使用scipy提供的内插器。 我想使用或包装scipy插入器,以便它尽可能接近旧插值器的行为。 这两个函数之间的主要区别在于,在我们的原始插补器中 – 如果input值高于或低于input范围,我们的原始插补器将推断结果。 如果你用scipy插入器试试这个,会引发一个ValueError 。 以这个程序为例: import numpy as np from scipy import interpolate x = np.arange(0,10) y = np.exp(-x/3.0) f = interpolate.interp1d(x, y) print f(9) print f(11) # Causes ValueError, because it's greater than max(x) 是否有一个明智的方法来使得它不会崩溃,最后一行将简单地进行线性外推,继续将第一个和最后两个点定义的梯度延续到无穷大。 请注意,在真正的软件中,我并没有使用exp函数 – 这里只是为了说明!