草庐IT

numpy-ndarray

全部标签

Python/Numpy/Scipy - 将字符串转换为数学函数

我处于一个有点不幸的位置,试图将程序从CERNROOT的深处转换为python。在ROOT代码中(CINT本身就是一种可憎的imo),可以将数学函数存储为“字符串”并将它们传递给ROOT以进行拟合、绘图等,因为ROOT将这些函数定义为“字符串”。目前,数学函数作为一行存储在简单的文本文件中,即(1+[1])^(1+[1])/TMath::Gamma(1+[1])*x^[1]/[0]^(1+[1])*exp(-(1+[1])*x/[0])然后在读入文件时被C++提取为字符串。python中有类似的东西吗?我知道numexpr,但我似乎无法让它与上面的等价物一起工作,即(1+p[1])**

python - 是否有更矢量化的方式来沿轴执行 numpy.outer ?

>>>x=np.array([['a0','a1'],['b0','b1']])>>>y=np.array([['x0','x1'],['y0','y1']])>>>iterable=[np.outer(x[i],y[i])foriinxrange(x.shape[0])]>>>elbareti=np.asarray(iterable)>>>elbaretiarray([[['a0'*'x0','a0'*'x1'],['a1'*'x0','a1'*'x1']],[['b0'*'y0','b0'*'y1'],['b1'*'y0','b1'*'y1']]])由于我计划使用大型数组,是否有更

python - numpy.arange 除以零错误

我已经使用numpy的arange函数来制作以下范围:a=n.arange(0,5,1/2)这个变量本身可以正常工作,但是当我尝试将它放在我的脚本中的任何位置时,我会收到一条错误消息:ZeroDivisionError:divisionbyzero 最佳答案 首先,您的step计算结果为零(在python2.x上)。其次,您可能需要检查np.linspace如果您想使用非整数步骤。Docstring:arange([start,]stop[,step,],dtype=None)Returnevenlyspacedvalueswith

python - 将 NumPy 数组按元素映射到更多维度的数组

我想将numpy.array从NxM映射到NxMx3,其中三个元素的向量是原始条目的函数:lambdax:[f1(x),f2(x),f3(x)]但是,numpy.vectorize之类的东西不允许更改尺寸。当然,我可以创建一个零数组并进行循环(anditiswhatIamdoingbynow),但它听起来既不符合Python风格也不高效(就像Python中的每个循环一样)。有没有更好的方法对numpy.array执行元素运算,为每个条目生成一个向量? 最佳答案 现在我看到了你的代码,对于大多数简单的数学运算,你可以让numpy进行循

python - 使用 Numpy 的矩阵解决方案 : no solution?

在Numpy中运行一个简单的脚本来求解一个包含3个方程的系统:fromnumpyimport*a=matrix('141;4137;72213')b=matrix('0;0;1')printlinalg.solve(a,b)但是当我通过命令提示符运行它时,我不知何故得到了:[[3.46430741e+15][-6.92861481e+14][-6.92861481e+14]]尽管WolframAlpha表示没有解决方案。有谁知道为什么Numpy/WRA答案之间似乎存在这种差异? 最佳答案 如果您拿笔和纸(或使用numpy.linal

python - 如何将for循环向下推到numpy

我有以下代码段完全按照我的要求执行(它是克里金方法的一部分)。但问题是它太慢了,我想知道是否有任何选项可以将for循环向下推到numpy?如果我推出numpy.sum,并在那里使用轴参数,它会加快一点,但显然这不是瓶颈。关于如何将forloop下推到numpy以加速它或其他加速方式的任何想法?)#n=2116printGRZVV.shape#(16309,2116)printGinvVV.shape#(2117,2117)VVg=numpy.empty((GRZVV.shape[0]))forkinxrange(GRZVV.shape[0]):GRVV=numpy.empty((n+1

python - 在二维数组中创建规则网格的 Numpy 例程

我正在尝试编写一个函数,在二维数组中创建一个5x5像素的规则网格。我希望numpy.arange和numpy.repeat的一些组合可以做到这一点,但到目前为止我还没有任何运气,因为numpy.repeat只会沿着同一行重复。这是一个例子:假设我想在形状为(20,15)的二维数组中放置一个5x5的网格。它应该看起来像:array([[0,0,0,0,0,1,1,1,1,1,2,2,2,2,2],[0,0,0,0,0,1,1,1,1,1,2,2,2,2,2],[0,0,0,0,0,1,1,1,1,1,2,2,2,2,2],[0,0,0,0,0,1,1,1,1,1,2,2,2,2,2],[

python - Numpy apply_along_axis 函数

我正在尝试将numpysapply_along_axis与需要多个参数的函数一起使用。test_array=np.arange(10)test_array2=np.arange(10)defexample_func(a,b):returna+bnp.apply_along_axis(example_func,axis=0,arr=test_array,args=test_array2)在手册中:http://docs.scipy.org/doc/numpy/reference/generated/numpy.apply_along_axis.html有附加参数的参数args。但是,如果

python - 由于 Theano 和 NumPy 变量类型而出错

我正在使用numpy1.9和最新版本的Theano编写此代码,但出现无法修复的错误。我怀疑这可能是我声明变量类型的方式,但我无法解决。感谢您的建议。我想用一个向量生成一个矩阵,然后用一个偏差求和。importtheano.tensorasTfromtheanoimportfunctionimportnumpyasnpimportpprintdeftest_theano_matrix():pp=pprint.PrettyPrinter(indent=3)W=T.fmatrix()x=T.fvector()b=T.fvector()y=T.dot(W,x)+blin_func=functi

python - 使用 Numpy 和 Cython 加速距离矩阵计算

考虑一个维度为NxM的numpy数组A。目标是计算欧氏距离矩阵D,其中每个元素D[i,j]是行i和j之间的欧氏距离。最快的方法是什么?这不完全是我需要解决的问题,但它是我正在尝试做的事情的一个很好的例子(一般来说,可以使用其他距离度量)。这是迄今为止我能想到的最快速度:n=A.shape[0]D=np.empty((n,n))foriinrange(n):D[i]=np.sqrt(np.square(A-A[i]).sum(1))但这是最快的方法吗?我主要关心for循环。我们可以用Cython来打败它吗?为了避免循环,我尝试使用广播,并执行如下操作:D=np.sqrt(np.squar