小编BKa*_*Kay的帖子

Python中的快速二维插值与SciPy常规网格进行分散/不规则评估

我有一个常规的训练值网格(向量x和y,各自的网格xmesh和ymesh以及zmesh的已知值),但是要插值的散乱/不规则/不规则值组(向量xI和yI,我们对zI感兴趣) [0] = f(xI [0],yI [0])... zI [N-1] = f(xI [N-1],yI [N-1]).这种插值将被称为数百万时间作为优化问题的一部分,因此性能太重要,不能简单地使用制作网格并获取跟踪的方法.

到目前为止,我已经能够找到一个接近我想要的scipy.interpolate函数,即Bpf函数.然而,因为它传达了一个分散的输入,我认为它没有良好的性能,我想测试它对样条线性,线性和最近邻插值方法,我理解得更好,我希望会更快.实现这些的所有方法,我可以找到将常规网格作为训练数据(如RectBivariateSpline)似乎也需要常规网格来插值的值.

这段代码有希望弄清楚我在问什么.

import numpy as np
import scipy as sp
import scipy.interpolate as interp

x = np.arange(0,2*np.pi,.1)
y = x
xmesh,ymesh = np.meshgrid(x,y)
zmesh = np.sin(xmesh)+np.cos(ymesh)
rbf = interp.Rbf(xmesh, ymesh, zmesh, epsilon=2)
xI = np.arange(0,np.pi,.05)
yI = xI
XI, YI = np.meshgrid(xI,yI)
# Notice how this is happy to take a vector or grid as input   
zI = rbf(xI, yI)
ZI = rbf(XI,YI) # equiv. to zImesh
myspline …
Run Code Online (Sandbox Code Playgroud)

python interpolation numpy mesh scipy

9
推荐指数
1
解决办法
7635
查看次数

字符串等价于= +但是现有字符串作为附加而不是预先添加到新字符串

我正在使用PyCharm(版本4.0.3)并获得样式警告分配可以替换为以下代码的第二行上的扩充分配*:

abc = 'and cheese'
abc = 'ham' + abc
Run Code Online (Sandbox Code Playgroud)

* - 我的代码不是真正的代码,但它会产生相同的错误.我以编程方式生成两个字符串,我必须/想要在第二行(英语语法的第一部分)之前生成第一行(英语语法的第二部分).

但我不知道增强任务可以做到这一点.如果代码是这样的(可以在执行顺序中首先生成所需最终字符串的第一部分)

abc = 'ham'
abc = abc + 'and cheese'
Run Code Online (Sandbox Code Playgroud)

那么我相信用+ =运算符可以解决这个问题:

abc = 'ham'
abc += 'and cheese'
Run Code Online (Sandbox Code Playgroud)

但在我的问题('和奶酪'部分在'火腿'之前宣布')的背景下,有没有办法满足这个警告?

python string operators pycharm

6
推荐指数
1
解决办法
1712
查看次数

如何重新采样混合类型的 Pandas 数据框?

我使用以下 Python 代码生成混合类型(浮点数和字符串)Pandas DataFrame df3:

df1 = pd.DataFrame(np.random.randn(dates.shape[0],2),index=dates,columns=list('AB'))
df1['C'] = 'A'
df1['D'] = 'Pickles'
df2 = pd.DataFrame(np.random.randn(dates.shape[0], 2),index=dates,columns=list('AB'))
df2['C'] = 'B'
df2['D'] = 'Ham'
df3 = pd.concat([df1, df2], axis=0)
Run Code Online (Sandbox Code Playgroud)

当我将 df3 重新采样到更高的频率时,我不会将帧重新采样到更高的速率,但是如何忽略,我只会得到缺失值:

df4 = df3.groupby(['C']).resample('M',  how={'A': 'mean', 'B': 'mean',  'D': 'ffill'})
df4.head()
Run Code Online (Sandbox Code Playgroud)

结果:

                      B          A        D
C                                          
A 2014-03-31 -0.4640906 -0.2435414  Pickles
  2014-04-30        NaN        NaN      NaN
  2014-05-31        NaN        NaN      NaN
  2014-06-30 -0.5626360  0.6679614  Pickles
  2014-07-31        NaN        NaN      NaN
Run Code Online (Sandbox Code Playgroud)

当我将 df3 重新采样到较低频率时,我根本没有得到任何重新采样:

df5 = df3.groupby(['C']).resample('A',  how={'A': np.mean, 'B': np.mean,  'D': 'ffill'}) …
Run Code Online (Sandbox Code Playgroud)

python numpy time-series pandas

5
推荐指数
1
解决办法
1469
查看次数

Python实现统计扫描运算符

我正在学习一些使用书中缺失数据进行统计的技术(Little和Rubin的缺失数据统计分析).使用单调无响应数据的一个特别有用的功能是扫描运算符(详细信息请参见第148-151页).我知道R模块gmmswp函数可以做到这一点,但我想知道是否有人在Python中实现了这个函数,理想情况下是Numpy矩阵来保存输入数据.我搜索StackOverflow和几个网络搜索没有成功.谢谢你的帮助.

更新:我以为我只是错过了它,而不是有人会为我写的.但那也很棒.这是定义.

如果PxP对称矩阵G被另一个对称的PxP矩阵H替换,其中元素定义如下:PxP对称矩阵G被称为在行k和列k上扫描:所以这是,但现在遵循代码块:

    h_kk = -1/g_kk
    h_jk = h_kj = g_jk/g_kk for j != k
    h_jl = g_jl - g_jk g_kl / g_kk j != k, l != k


    G = [g11, g12, g13
         g12, g22, g23
         g13, g23, g33]   
    H = SWP(1,G) = [-1/g11, g12/g11, g13/g11
                   g12/g11, g22-g12^2/g11, g23-g13*g12/g11
                   g13/g11, g23-g13*g12/g11, g33-g13^2/g11]
    kvec = [k1,k2,k3]
    SWP[kvec,G] = SWP(k1,SWP(k2,SWP(k3,G)))

    Inverse function
    H = RSW(k,G)
    h_kk = -1/g_kk
    h_jk = h_kj = -g_jk/g_kk …
Run Code Online (Sandbox Code Playgroud)

python statistics numpy

3
推荐指数
1
解决办法
892
查看次数