Tag: numpy

一个快速的方法来find一个numpy数组中最大的N个元素

我知道我可以做到这一点,如下所示: import numpy as np N=10 a=np.arange(1,100,1) np.argsort()[-N:] 然而,这是一个完整的sorting,是非常缓慢的。 我不知道numpy是否提供了一些快速的方法。

我怎样才能有效地处理类似于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 解决上述问题的代码片段会很好

Numpy:快速find第一个价值指数

我怎样才能find一个数字的第一次出现在一个Numpy数组的索引? 速度对我很重要。 我对以下答案不感兴趣,因为他们扫描整个数组,并且在发现第一个发生时不停止: itemindex = numpy.where(array==item)[0][0] nonzero(array == item)[0][0] 注1:这个问题的答案没有看起来相关是否有一个Numpy函数返回数组中的第一个索引的东西? 注2:使用C编译的方法比Python循环更受欢迎。

我如何捕捉像是一个exception(不只是为了testing)的一个numpy警告?

我必须在Python中为一个项目制作拉格朗日多项式。 为了避免使用明确的for循环而不是牛顿的不同的风格,我正在做一个重心式的风格。 我遇到的问题是我需要通过零来捕捉一个除法,但是Python(或者可能是numpy)只是使它成为警告而不是正常的exception。 所以,我需要知道怎么做就是把这个警告看作是一个例外。 我在这个网站上find的相关问题不是以我需要的方式回答的。 这是我的代码: import numpy as np import matplotlib.pyplot as plt import warnings class Lagrange: def __init__(self, xPts, yPts): self.xPts = np.array(xPts) self.yPts = np.array(yPts) self.degree = len(xPts)-1 self.weights = np.array([np.product([x_j – x_i for x_j in xPts if x_j != x_i]) for x_i in xPts]) def __call__(self, x): warnings.filterwarnings("error") try: bigNumerator = […]

如何使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函数 – 这里只是为了说明!

ImportError:无法导入名称NUMPY_MKL

我试图运行以下简单的代码 import scipy scipy.test() 但是我收到以下错误 Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 586, in runfile execfile(filename, namespace) File "C:/Users/Mustafa/Documents/My Python Code/SpectralGraphAnalysis/main.py", line 8, in <module> import scipy File "C:\Python27\lib\site-packages\scipy\__init__.py", line 61, in <module> from numpy._distributor_init import NUMPY_MKL # requires numpy+mkl ImportError: cannot import name NUMPY_MKL 我在Windows 10下使用python 2.7。 […]

Cython:“致命错误:numpy / arrayobject.h:没有这样的文件或目录”

我正在使用Cython来加速这个答案。 我尝试编译代码(在这里解释cygwinccompiler.py hack之后),但得到一个fatal error: numpy/arrayobject.h: No such file or directory…compilation terminated错误。 任何人都可以告诉我,如果这是我的代码有问题,或用Cython的一些深奥的微妙? 以下是我的代码。 提前致谢: import numpy as np import scipy as sp cimport numpy as np cimport cython cdef inline np.ndarray[np.int, ndim=1] fbincount(np.ndarray[np.int_t, ndim=1] x): cdef int m = np.amax(x)+1 cdef int n = x.size cdef unsigned int i cdef np.ndarray[np.int_t, ndim=1] c = np.zeros(m, […]

如何使用Numpy来计算导数?

例如,如何计算函数的导数 y = x 2 +1 使用numpy ? 假设我想要x = 5时的导数值