根据SciPy文档,可以使用多个变量最小化函数,但它没有说明如何优化这些函数.
from scipy.optimize import minimize
from math import *
def f(c):
return sqrt((sin(pi/2) + sin(0) + sin(c) - 2)**2 + (cos(pi/2) + cos(0) + cos(c) - 1)**2)
print minimize(f, 3.14/2 + 3.14/7)
Run Code Online (Sandbox Code Playgroud)
上面的代码确实尝试最小化函数f,但对于我的任务,我需要最小化三个变量.
简单地引入第二个参数并相应地调整最小化会产生错误(TypeError: f() takes exactly 2 arguments (1 given)).
minimize使用多个变量进行最小化时如何工作.
我用大写字母表示矩阵,用小写字母表示向量.
我需要解决以下矢量线性不等式系统v:
min(rv - (u + Av), v - s) = 0
Run Code Online (Sandbox Code Playgroud)
哪里0是零矢量.
其中r是一个标量,u并且s是载体,以及A是一个矩阵.
定义z = v-s,B=rI - A,q=-u + Bs,我可以重写前面的问题作为线性互补问题,并希望能使用LCP求解器,例如openopt:
LCP(M, z): min(Bz+q, z) = 0
Run Code Online (Sandbox Code Playgroud)
或者,以矩阵表示法:
z'(Bz+q) = 0
z >= 0
Bz + q >= 0
Run Code Online (Sandbox Code Playgroud)
问题是我的方程系统很大.要创造A,我
A11,A12,A21,A22使用scipy.sparse.diagsA = scipy.sparse.bmat([[A11, A12], [A21, …说现在我有一个numpy数组,定义为,
[[1,2,3,4],
[2,3,NaN,5],
[NaN,5,2,3]]
Run Code Online (Sandbox Code Playgroud)
现在我想要一个包含缺失值的所有索引的列表,[(1,2),(2,0)]在这种情况下.
有什么方法可以做到吗?
如何将Z分数从Z分布(标准正态分布,高斯分布)转换为p值?我还没有找到Scipy stats模块中的神奇功能来做到这一点,但必须有一个.
是否有任何通用形式的短时傅里叶变换,其中相应的逆变换内置于SciPy或NumPy或其他任何东西?
specgram在matplotlib中有pyplot 函数,它调用ax.specgram()哪些调用mlab.specgram()调用_spectral_helper():
Run Code Online (Sandbox Code Playgroud)#The checks for if y is x are so that we can use the same function to #implement the core of psd(), csd(), and spectrogram() without doing #extra calculations. We return the unaveraged Pxy, freqs, and t.
但
这是一个辅助函数,它实现了204#psd,csd和谱图之间的通用性.它 并不意味着在mlab之外使用
不过,我不确定这是否可以用来做STFT和ISTFT.还有什么,或者我应该翻译这些MATLAB函数吗?
我知道如何编写自己的临时实现; 我只是在寻找功能齐全的东西,它可以处理不同的窗口函数(但是有一个合理的默认值),完全可以与COLA windows(istft(stft(x))==x)完全颠倒,由多人测试,没有一个一个错误,处理结束和零填充,实际输入的快速RFFT实现等.
我想从均匀间隔的2D数据(类似图像的数据)的单个轮廓获取数据.
基于类似问题中的示例:如何获得由等高线图(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()
Run Code Online (Sandbox Code Playgroud)
这次调用的结果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)]
Run Code Online (Sandbox Code Playgroud)
基于这些图,这个结果是有意义的,并且似乎是轮廓线的(y,x)对的集合.
除了手动循环这个返回值,提取坐标和组合线的数组,是否有更好的方法从matplotlib.path对象获取数据?从数据中提取数据时是否存在需要注意的陷阱matplotlib.path?
或者,有没有替代品matplotlib或更好numpy/ scipy做类似的事情?理想的是获得描述该线的(x,y)对的高分辨率矢量,可用于进一步分析,因为通常我的数据集不像上面的例子那么小或简单.
是否有任何python包允许有效计算多变量正常pdf?
它似乎没有被包含在Numpy/Scipy中,并且令人惊讶的是谷歌搜索没有发现任何有用的东西.
我需要找出矩阵是否是正定的.我的矩阵是numpy矩阵.我期待在numpy库中找到任何相关的方法,但没有成功.我感谢任何帮助.
我有一些观点,我正在尝试适合这一点的曲线.我知道存在scipy.optimize.curve_fit函数,但我不懂文档,即如何使用这个函数.
我的观点: np.array([(1, 1), (2, 4), (3, 1), (9, 3)])
任何人都可以解释如何做到这一点?
所以,我正在使用非常稀疏的numpy数组进行一些Kmeans分类 - 很多很多零.我想我会使用scipy的'稀疏'软件包来减少存储开销,但我对如何创建数组而不是矩阵有点困惑.
我已经完成了关于如何创建稀疏矩阵的教程:http: //www.scipy.org/SciPy_Tutorial#head-c60163f2fd2bab79edd94be43682414f18b90df7
为了模拟一个数组,我只是创建一个1xN矩阵,但正如你可能猜到的,Asp.dot(Bsp)不能正常工作,因为你不能将两个1xN矩阵相乘.我必须将每个数组转换为Nx1,这非常蹩脚,因为我会为每个点积计算做这个.
接下来,我尝试创建一个NxN矩阵,其中第1列==第1行(这样您可以将两个矩阵相乘,只需将左上角作为点积),但结果证明效率非常低.
我喜欢使用scipy的稀疏包作为numpy的数组()的神奇替代品,但到目前为止,我还不确定该怎么做.
有什么建议?