标签: scipy

如何找到数组中第二常见的数字?

我尝试使用scipy.stats模式来查找最常见的值。但是,我的矩阵包含很多零,因此这始终是模式。

例如,如果我的矩阵如下所示:

array = np.array([[0, 0, 3, 2, 0, 0],
             [5, 2, 1, 2, 6, 7],
             [0, 0, 2, 4, 0, 0]])
Run Code Online (Sandbox Code Playgroud)

我想得到2退货的价值。

python scipy

0
推荐指数
1
解决办法
2195
查看次数

使用python scipy.optimize.minimize进行优化

我想优化泵存储工厂的时间表.基本上有96个已知价格(当天的每个季度),模型应决定是否(1)泵,(2)涡轮机或(3)每个季度都不做任何事情.因此,X:-100有一些界限

首先,我尝试了以下内容:

from scipy.optimize import minimize
import numpy as np

prices=np.array([[1.5,50,30]])
xp =np.array([[1.5,50,30]])

fun = lambda x: xp* prices #here xp and prices should be matrices

cons = ({'type': 'ineq', 'fun': lambda x:  (xp*0.25)<=500},
    {'type': 'ineq', 'fun': lambda x: (xp*0.25)>=0})

bnds = ((0, None), (0, None), (0, None))

res = minimize(fun, (2, 0,0), method='SLSQP', bounds=bnds, constraints=cons)
Run Code Online (Sandbox Code Playgroud)

但是,这会引发错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-17-15c05e084977> in <module>()
     10 bnds = ((0, None), (0, None), (0, None))
     11 
---> 12 res …
Run Code Online (Sandbox Code Playgroud)

python optimization scipy

0
推荐指数
1
解决办法
3235
查看次数

为什么"N选择k"方法scipy.misc.comb(n,k)在Python2.x和Python3.x之间存在很大差异?

在项目Euler解决问题(剧透)中,这对我来说是一个问题:

15

Python2.7.10/0.13.0b1: scipy.misc.comb(40,20) -> array(137846528819.9994)

Python3.5.0/scipy 0.16.0: scipy.misc.comb(40,20) -> 137846528820.00006

令人沮丧的是,我了解到我必须round()在结果上调用函数,而不是直接转换为int()使用math.floor()/ math.ceil()用于Python 2/3的一致性.

导致两个Python/SciPy版本之间出现这种差异的原因是什么?

有没有理由SciPy开发人员不只是首先调用round()返回的结果scipy.misc.comb()

python scipy

0
推荐指数
1
解决办法
1034
查看次数

Python:interpolate.UnivariateSpline包'错误:(m> k)因隐藏m而失败:fpcurf0:m = 0'

我一直试图绘制一条线,以及样条拟合.以下是我的代码的通用版本.'x_coord'和'y_coord'是包含浮点值列表的列表.

import matplotlib.pyplot as plt
from scipy import interpolate as ipl

for a in range(len(x_coord)):
    plt.plot(x_coord[a],y_coord[a],label='Label')
    yinterp = ipl.UnivariateSpline(x_coord[a],y_coord[a],s=1e4)(x_coord[a])
    plt.plot(x_coord[a],yinterp,label='Spline Fit')
Run Code Online (Sandbox Code Playgroud)

虽然我认为这在过去对我有用,但现在我收到一条错误消息:

/.../Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/scipy/interpolate/fitpack2.pyc in __init__(self, x, y, w, bbox, k, s, ext)
    165 
    166         data = dfitpack.fpcurf0(x,y,k,w=w,
--> 167                                 xb=bbox[0],xe=bbox[1],s=s)
    168         if data[-1] == 1:
    169             # nest too small, setting to maximum bound

error: (m>k) failed for hidden m: fpcurf0:m=0 
Run Code Online (Sandbox Code Playgroud)

我已经看到类似错误消息的情况(例如dfitpack.error:(m> k)因隐藏的m:fpcurf0:m = 1而失败),只是在那种特殊情况下似乎存在涉及字典的问题,其中没有一个用于我的代码.

关于这个问题的任何建议将不胜感激.

python interpolation scipy

0
推荐指数
1
解决办法
4506
查看次数

使用scipy的Y值包含NAN的线性回归

我有两个一维数组,我想做一些线性回归.我用了:

slope, intercept, r_value, p_value, std_err = stats.linregress(x, y)
Run Code Online (Sandbox Code Playgroud)

但是斜率和截距总是NAN,NAN.我读了一点,我发现如果x或y有一些NAN,那就是预期的结果.我试过这个 解决方案,但它不起作用,因为在我的情况下,只有y包含一些NAN; 不是x.所以使用该解决方案,我有错误: ValueError: all the input array dimensions except for the concatenation axis must match exactly.

我该如何解决这个问题?

python arrays numpy scipy linear-regression

0
推荐指数
1
解决办法
1363
查看次数

最小二乘拟合正弦幂级数

我正在尝试适合形式的功能:

在此输入图像描述

其中A和B是固定常数.在scipy中,我通常(我认为合理规范)解决此类问题的方法如下:

def func(t, coefs):
    phase = np.poly1d(coefs)(t)
    return A * np.cos(phase) + B

def fit(time, data, guess_coefs): 
    residuals = lambda p: func(time, p) - data
    fit_coefs = scipy.optimize.leastsq(residuals, guess_coefs) 
    return fit_coefs
Run Code Online (Sandbox Code Playgroud)

这项工作正常,但我想提供一个分析雅可比行列式来改善收敛性.从而:

def jacobian(t, coefs):
    phase = np.poly1d(coefs, t)
    the_jacobian = []
    for i in np.arange(len(coefs)):
        the_jac.append(-A*np.sin(phase)*(t**i))
    return the_jac

def fit(time, data, guess_coefs):
    residuals = lambda p: func(time, p) - data
    jac = lambda p: jacobian(time, p)
    fit_coefs = scipy.optimize.leastsq(residuals, guess_coefs, 
                                       Dfun=jac, col_deriv=True)
Run Code Online (Sandbox Code Playgroud)

即使订单为2或更低,这也不会起作用.使用optimize.check_gradient()快速检查也不会产生积极的结果.

我几乎可以肯定Jacobian和代码是正确的(虽然请纠正我)并且问题更为基础:雅各比派中的t**i术语会导致溢出错误.这在函数本身中不是问题,因为这里单项式项乘以它们非常小的系数.

我的问题是:

  1. 我上面做了什么,代码有什么不对吗?
  2. 还是有其他问题吗?
  3. 如果我的假设是正确的,有没有办法预处理拟合函数,那么雅可比行为更好?也许我可以适应数据和时间的对数,或者其他东西. …

python numpy mathematical-optimization curve-fitting scipy

0
推荐指数
1
解决办法
251
查看次数

Matlab:有可能是函数的源代码,mvncdf?

我对函数的实现很感兴趣mvncdf,(http://cn.mathworks.com/help/stats/mvncdf.html).

具体来说,我想知道它传递一个数组并返回一个数组的实现.我想知道它是否以有效的方式完成.因为我正在使用numpy,而且没有对应的numpy.

python matlab numpy scipy

0
推荐指数
1
解决办法
283
查看次数

使用LinearNDInterpolator(Python)绘制插值

我使用以下脚本在一些(x,y,z)数据上使用LinearNDInterpolator。但是,我不知道如何从插值数据转到以热图形式绘制/显示插值?我是否缺少基于x和y的最小值和最大值设置网格网格的内容?任何帮助或示例都很好!

import numpy as np
import scipy.interpolate

x = np.array([-4386795.73911443, -1239996.25110694, -3974316.43669208,
               1560260.49911342,  4977361.53694849, -1996458.01768192,
               5888021.46423068,  2969439.36068243,   562498.56468588,
               4940040.00457585])

y = np.array([ -572081.11495993, -5663387.07621326,  3841976.34982795,
               3761230.61316845,  -942281.80271223,  5414546.28275767,
               1320445.40098735, -4234503.89305636,  4621185.12249923,
               1172328.8107458 ])

z = np.array([ 4579159.6898615 ,  2649940.2481702 ,  3171358.81564312,
               4892740.54647532,  3862475.79651847,  2707177.605241  ,
               2059175.83411223,  3720138.47529587,  4345385.04025412,
               3847493.83999694])

# Create coordinate pairs
cartcoord = zip(x, y)

# Interpolate
interp = scipy.interpolate.LinearNDInterpolator(cartcoord, z)
Run Code Online (Sandbox Code Playgroud)

编辑:基于@Spinor的解决方案,并使用Python 2.7,以下代码为我提供了我正在寻找的方法(方法1)。有没有办法增加插值点的密度?

数据集产生以下图: 在此处输入图片说明

不用说,我没想到结果是圆形的,因为(纬度,经度)坐标取自等角投影图。在进一步调查中,我认为这只是映射到不同的投影上

python interpolation imaging scipy

0
推荐指数
1
解决办法
5622
查看次数

Python Numpy:[0,360]中的弧度到度

申请时,rad2deg我得到

>>> np.rad2deg(4*np.pi)
720.0
Run Code Online (Sandbox Code Playgroud)

的角度720.0度是在应用等同于角许多360.0度.

将弧度(从dtype=float64)转换为结果为正确值的度数的最佳方法是[0,180]什么?

numpy scipy

0
推荐指数
1
解决办法
1011
查看次数

使用scipy erfinv绘制高斯随机变量

我想绘制npts随机变量,以高斯分布,均值μ和色散sigma.我知道如何在Numpy中做到这一点:

x = np.random.normal(loc=mu, scale=sigma, size=npts)
print(np.std(x), np.mean(x))
0.1998, 0.3997
Run Code Online (Sandbox Code Playgroud)

这也应该可以通过逆变换使用scipy.special.erfinv,从均匀分布开始:

u = np.random.uniform(0, 1, npts)
Run Code Online (Sandbox Code Playgroud)

但是,我无法弄清楚如何正确缩放比例.有没有人这样做过?

python random numpy scientific-computing scipy

0
推荐指数
1
解决办法
371
查看次数