我有几个值在同一个不规则网格上定义(x, y, z),我想插入到新网格上(x1, y1, z1).即,我有f(x, y, z), g(x, y, z), h(x, y, z),我想计算f(x1, y1, z1), g(x1, y1, z1), h(x1, y1, z1).
目前我正在使用这个scipy.interpolate.griddata并且效果很好.但是,因为我必须单独执行每个插值并且有很多点,所以它很慢,在计算中有很多重复(即找到哪些点最接近,设置网格等等).
有没有办法加快计算速度并减少重复计算?即沿着定义两个网格的线条,然后更改插值的值?
如果我想将两个独立轴的 x 轴和 y 轴连接在一起,以便它们一起缩放,我通常会这样做:
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122,sharex=ax1, sharey=ax1)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将一个图的 x 轴与另一个图的 y 轴共享。例如,一个图的 x 轴是“时间”,我想与另一个也代表“时间”的图的 y 轴共享它。像这样的东西(这不起作用......):
ax2 = fig.add_subplot(122,sharex=ax1.yaxis, sharey=ax1.xaxis)
Run Code Online (Sandbox Code Playgroud) 我一直遇到在Matplotlib中生成出版物"完美"图像的问题(即更改字体大小,标记大小,图形大小,刻度数等...).
基本上,我想做这里描述的内容:http://www.scipy.org/Cookbook/Matplotlib/LaTeX_Examples,除非图已经完成.即我想创建一个接受Figure对象的函数,并进行所有必要的更改,其中一些可用作输入参数.这样,当我决定在论文中使用数字时,我不必总是修改我的脚本.
有没有一种有效的方法来实现这一目标?
注意我通常使用Ipython.
我试图使用Python将复杂值从一个不规则网格插入另一个不规则网格.网格是2D的,有103,113个数据点.我使用的是Python 2.6.6,Scipy 0.7.2,Numpy 1.3.0,Matplotlib 0.99.3
在使用griddata的Matlab中,这可以在大约5秒内完成.
BnGRID2 = griddata(R_GRID1,Z_GRID1,BnGRID1,R_GRID2,Z_GRID2) (MATLAB)
Run Code Online (Sandbox Code Playgroud)
(注意所有阵列都是201 x 513)
但是,如果我尝试使用matplotlib.mlab.griddata,即使我尝试仅使用真实部分,我也会得到一个memoryError:
mlab.griddata(R_GRID1.flatten(),Z_GRID1.flatten(),num.real(BnGRID1.flatten()),R_GRID2.flatten(),Z_GRID2.flatten())
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用interp2d,我会遇到分段错误,Python会退出:
a = interp.interp2d(R_GRID1,Z_GRID1,num.real(BnGRID1))
Run Code Online (Sandbox Code Playgroud)
我尝试使用KDTree,这似乎工作正常,但是,与Matlab的几秒相比,它需要几分钟,但我还没有太多探索这个选项.
想知道是否有人有任何想法我怎么能像Matlab一样快地完成这项工作?我注意到Scipy的新版本也有griddata,有谁知道这是否可以处理大的不规则网格?
我想知道'a = a'和'b = b'是否会导致问题/意外行为?代码在示例中工作正常.
def add_func(a=2,b=3):
return a+b
a=4
b=5
answer = add_func(a=a, b=b)
Run Code Online (Sandbox Code Playgroud)
谢谢