草庐IT

scipy-optimize

全部标签

python - 使用 scipy.signal.resample 重采样时间

我有一个信号不是等距采样的;为了进一步处理它需要。我以为scipy.signal.resample会做,但我不明白它的行为。信号在y中,相应的时间在x中。重采样预计在yy中进行,所有相应的时间都在xx中。有谁知道我做错了什么或如何实现我的需要?此代码不起作用:xx不是时间:importnumpyasnpfromscipyimportsignalimportmatplotlib.pyplotaspltx=np.array([0,1,2,3,4,5,6,6.5,7,7.5,8,8.5,9])y=np.cos(-x**2/4.0)num=50z=signal.resample(y,num,x

python - SciPy 中的二维插值问题,非矩形网格

我一直在尝试使用scipy.interpolate.bisplrep()和scipy.interpolate.interp2d()在我的(218x135)2D球形极坐标网格上查找数据的插值。我将我的网格节点的笛卡尔位置的二维数组X和Y传递给它们。我不断收到如下错误(对于线性插值。使用interp2d):“警告:不能添加更多的结,因为额外的结会重合和一个旧的。可能原因:重量太小或太大到一个不准确的数据点。(fp>s)kx,ky=1,1nx,ny=4,5m=29430fp=1390609718.902140s=0.000000"使用默认的平滑参数s等,我得到了双变量样条的类似结果。我的数据

python - 使用 scipy.io.loadmat 从 .mat Matlab 文件将字典键转换为在 Python 中具有相同值的变量名

我正在尝试使用scipy.io.loadmat从.mat文件加载基本字典temp={'key':array([1,2])}。将loadmat()返回的Python字典文件中的键值转换为变量名,其值与代表键值相同。例如:temp={'key':array([1,2])}变成了key=array([1,2])我知道如何使用temp.keys()获取key。然后抓取项目很容易,但我如何强制temp.keys()中的字符串列表为变量名而不是字符串。我希望这是有道理的,但这可能真的很容易,我只是想不出该怎么做。干杯 最佳答案 在python中

python - scipy 没有优化并返回 "Desired error not necessarily achieved due to precision loss"

我有以下代码试图最小化对数似然函数。#!/usr/bin/pythonimportmathimportrandomimportnumpyasnpfromscipy.optimizeimportminimizedefloglikelihood(params,data):(mu,alpha,beta)=paramstlist=np.array(data)r=np.zeros(len(tlist))foriinxrange(1,len(tlist)):r[i]=math.exp(-beta*(tlist[i]-tlist[i-1]))*(1+r[i-1])loglik=-tlist[-1]*

python - 具有多个输入的 Scipy LinearOperator

我需要反转一个大而密集的矩阵,我希望使用Scipy的gmres来完成。幸运的是,密集矩阵A遵循一种模式,我不需要将矩阵存储在内存中。LinearOperator类允许我们构造一个对象作为GMRES的矩阵,并可以直接计算矩阵向量乘积A*v。也就是说,我们编写了一个函数mv(v),它将向量v作为输入并返回mv(v)=A*v。然后,我们可以使用LinearOperator类来创建A_LinOp=LinearOperator(shape=shape,matvec=mv)。我们可以将线性运算符放入Scipygmres命令中以评估矩阵向量乘积,而无需将A完全加载到内存中。LinearOperato

python - 在 scipy 中使用大 F 阶矩阵进行 dgemm 段错误

我正在尝试使用SciPy的dgemm在Python中计算A*A.T,但是当A具有较大的行维度(~50,000)并且我以F顺序传递矩阵时出现段错误。当然,生成的矩阵非常大,但是sgemm和以C顺序传递给dgemm都有效,>>>importnumpyasnp>>>importscipy.linalg.blas>>>A=np.ones((50000,100))#sgemmworks,A.TisinF-order>>>C=scipy.linalg.blas.sgemm(alpha=1.0,a=A.T,b=A.T,trans_a=True);#dgemmworks,AisinC-order(sl

python - 使用 scipy 在 python 中读取 MatLab 文件

我正在使用带有scipy包的python来读取MatLab文件。但是它花费的时间太长而且会崩溃。Dataset大小约为50~MB有没有更好的方法来读取数据并形成边列表?我的python代码importscipy.ioasiodata=io.loadmat('realitymining.mat')printdata 最佳答案 您可以将结构的每个字段保存在不同的文本文件中,例如:save('friends.txt','-struct','network','friends','-ascii')并从python中单独加载每个文件frien

python - 将 SciPy 编译为 Android - 是否已完成,关于如何将 FORTRAN 代码编译为 Android Arm 的任何帮助

对于一个项目,我正在将一个使用SciPy的科学Python应用程序移植到Android。我目前正在使用https://github.com/kivy/python-for-android构建代码。NumPy可以构建,但SciPy被证明是一个真正的麻烦。与devenv和kivypythonforandroid打交道,我不得不将SciPyC库编译为androidARM,但现在,fortran库仍有待构建,我不知所措。如有任何帮助,我们将不胜感激。 最佳答案 如果这是一个非答案的道歉:首先,如果你只是玩玩我建议在armchrootjail

python - SciPy SVD 与 Numpy SVD

SciPy和Numpy都内置了奇异值分解(SVD)函数。命令基本上是scipy.linalg.svd和numpy.linalg.svd。这两者有什么区别?它们中的任何一个都比另一个更好吗? 最佳答案 来自FAQpage,它说scipy.linalg子模块为FortranLAPACK库提供了一个更完整的包装器,而numpy.linalg试图能够独立于LAPACK进行构建。我做了一些benchmarks对于svd函数的不同实现,发现scipy.linalg.svd比对应的numpy更快:然而,jax包裹的numpy,又名jax.nump

python - 如何在 scipy 中最小化具有离散变量值的函数

我正在尝试优化具有多个输入变量(在24到30之间)的目标函数。这些变量是三个不同统计变量的样本,目标函数值是t检验概率值。误差函数表示期望和实际t检验概率之间的误差(差的平方和)。对于所有三个t检验,我只能接受误差小于1e-8的解决方案。我使用的是scipy.optimize.fmin,效果很好。有许多目标函数变为零的解决方案。问题是我需要找到一个解决方案,其中变量在0到10.0之间,并且是整数或者小数部分不超过一位。有效值的示例是01035.56.8。无效值示例:-32.2330或0.16666667。我碰巧知道至少有一个解决方案,因为目标值来自实际测量数据。原来的资料丢了,我的任务