草庐IT

python - 如何提取稀疏矩阵的主对角线?

如何提取稀疏矩阵的主对角线?矩阵在scipy.sparse中创建。我想要等效于np.diagonal(),但用于稀疏矩阵。 最佳答案 稀疏矩阵有一个diagonal方法:M.diagonal()http://docs.scipy.org/doc/scipy/reference/generated/scipy.sparse.csc_matrix.diagonal.htmlnumpydiagonal更强大一点,允许你指定一个非对角线M.A.diagonal(2) 关于python-如何提取稀

python - 为什么 SciPy 使用 Fisher 精确检验对极小的 p 值返回负 p 值?

我注意到如果p值极小,SciPy中的Fisher精确检验会返回负p值:>>>importscipyassp>>>importscipy.stats>>>x=[[48,60],[3088,17134]]>>>sp.stats.fisher_exact(x)(4.4388601036269426,-1.5673906617053035e-11)在R中,使用相同的2x2列联表:>a=matrix(c(48,60,3088,17134),nrow=2)>fisher.test(a)p-value=6.409e-13我的问题是1)为什么SciPy返回负p值?2)如何使用SciPy生成正确的p值?

python - 'import ... as' 的约定

通常,使用importnumpyasnp导入模块numpy。是否有通用的命名约定?其他模块呢,特别是像scipy、sympy和pylab这样的科学计算模块,或者像scipy.sparse. 最佳答案 SciPy建议在itsdocumentation中importscipyassp,尽管我个人认为这没什么用,因为它只允许您访问重新导出的NumPy功能,而不是SciPy添加的任何内容。我发现自己更频繁地执行importscipy.sparseassp,但后来我大量使用该模块。还有importmatplotlibasmplimportma

python - 用 numpy 打破平局

标准的numpy圆形平分遵循IEEE754惯例,将一半舍入到最接近的偶数。有没有办法指定不同的舍入行为,例如向零舍入还是向-inf舍入?我不是在谈论上限或下限,我只是需要不同的决胜局。 最佳答案 NumPy不对内部舍入模式提供任何控制。这里有两种选择:使用gmpy2,如thisanswer中所述.这使您可以完全控制舍入模式,但使用gmpy2进行简单的float学运算可能比NumPy慢。通过ctypes使用fesetround手动设置舍入模式。这是系统特定的,因为常量可能因平台而异;检查fenv.h以获取您平台上的常量值。在我的机器上

Python SciPy 卷积与 fftconvolve

我知道一般来说,当数组相对较大时,FFT和乘法通常比直接卷积运算更快。但是,我正在将一个非常长的信号(比如1000万点)与一个非常短的响应(比如1000点)进行卷积。在这种情况下,fftconvolve似乎没有多大意义,因为它强制第二个数组的FFT与第一个数组的大小相同。在这种情况下直接进行卷积会更快吗? 最佳答案 看看我在这里做的比较:http://scipy-cookbook.readthedocs.io/items/ApplyFIRFilter.html您的情况可能接近使用普通卷积和使用基于FFT的卷积之间的过渡,因此您最好的

python - 通过阈值将 SciPy 层次树状图切割成簇

我正在尝试使用SciPy的dendrogram方法根据阈值将我的数据分成多个簇。但是,一旦我创建了一个树状图并检索了它的color_list,列表中的条目就比标签少了一个。或者,我尝试使用fcluster,其阈值与我在dendrogram中确定的相同;但是,这不会呈现相同的结果——它给了我一个集群而不是三个。这是我的代码。importpandasdata=pandas.DataFrame({'total_runs':{0:2.489857755536053,1:1.2877651950650333,2:0.8898850111727028,3:0.77750321282732704,4

python - 使用 scipy 最小化多变量函数。导数未知

我有一个函数,它实际上是对另一个程序(一些Fortran代码)的调用。当我调用此函数(run_moog)时,我可以解析4个变量,并返回6个值。这些值都应该接近于0(为了最小化)。但是,我将它们组合成这样:np.sum(results**2)。现在我有一个标量函数。我想最小化这个函数,即让np.sum(results**2)尽可能接近于零。注意:当此函数(run_moog)接受4个输入参数时,它会为依赖于这些参数的Fortran代码创建一个输入文件。我从thescipydocs尝试了几种优化方法.但没有一个按预期工作。最小化应该能够限制4个变量。这是一个尝试:fromscipy.opti

python - 二维数组中 8 个邻居的总和

我需要找到一个单元格的所有相邻元素的总和,例如getsumofneighbors(matrix,i,j):'M*Nmatrix'[[010][201][040][000]]单元格[0][0]的最近元素之和为3[1][0]是5在[1][1]处是8是否有一个python库可以找到给定单元格旁边所有元素的总和? 最佳答案 如果不介意对scipy的依赖,可以使用scipy.ndimage.convolve,如下:In[475]:aOut[475]:array([[0,1,0],[2,0,1],[0,4,0],[0,0,0]])In[476]

python - 如何从 curve_fit 获得置信区间

我的问题涉及统计和python,我是两者的初学者。我正在运行模拟,对于自变量(X)的每个值,我为因变量(Y)生成1000个值。我所做的是计算每个X值的Y平均值,并使用scipy.optimize.curve_fit拟合这些平均值。曲线非常吻合,但我还想绘制置信区间。我不确定我正在做的事情是否正确,或者我想做的事情是否可以完成,但我的问题是如何从curve_fit生成的协方差矩阵中获取置信区间。该代码首先从文件中读取平均值,然后仅使用curve_fit。importnumpyasnpimportmatplotlib.pyplotaspltfromscipy.optimizeimportc

python - scipy 中最小二乘函数的雅可比行列式的方法签名

任何人都可以提供一个向leastsquaresfunction提供雅可比矩阵的示例吗?在scipy中?我无法弄清楚他们想要的方法签名-他们说它应该是一个函数,但很难弄清楚这个函数应该以什么顺序接受哪些输入参数。 最佳答案 这是我使用的指数衰减拟合:importnumpyasnpfromscipy.optimizeimportleastsqdeff(var,xs):returnvar[0]*np.exp(-var[1]*xs)+var[2]deffunc(var,xs,ys):returnf(var,xs)-ysdefdfunc(va