我一直在Numpy/Scipy中寻找包含有限差分函数的模块.然而,我发现最接近的是numpy.gradient(),这对于二阶精度的一阶有限差分是有利的,但如果你想要更高阶导数或更准确的方法则不是那么多.我甚至没有为这类事情找到很多具体的模块; 大多数人似乎都在做他们需要的"自己动手"的事情.所以我的问题是,是否有人知道任何模块(Numpy/Scipy的一部分或第三方模块)专门用于高阶(精度和衍生)有限差分方法.我有自己的代码,我正在研究,但它目前有点慢,我不会尝试优化它,如果有'
请注意,我所说的是有限差异,而不是衍生品.我已经看过两个scipy.misc.derivative()和Numdifftools,它们采用了我没有的分析函数的衍生物.
我有一个应用程序,我想使用Basemap从shapefile中绘制县.绘制县多边形是渲染的瓶颈,因为我将绘制美国的同一区域(多次),我宁愿不必绘制所有多边形而不是我需要的.所以我有想法将县绘制成具有透明背景的图形,使用轴将轴复制到像素缓冲区copy_from_bbox(),并restore_region()在需要绘制县时恢复缓冲区.
基本代码如下:
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
map = Basemap(...) # Create Basemap object
map.readshapefile("countyp020", 'counties', linewidth=0.5) # Draws the county lines
plt.gcf().patch.set_alpha(0.0)
plt.gca().patch.set_alpha(0.0)
# Copy to the pixel buffer (county_buffer is of type BufferRegion)
county_buffer = plt.gcf().canvas.copy_from_bbox(plt.gca().bbox)
plt.clf() # This line is problematic (see below)
# Plot my data here ...
# Restore the pixel buffer
plt.gcf().canvas.restore_region(county_buffer)
plt.gcf().canvas.blit(plt.gca().bbox) # Not sure if this line is necessary
plt.gcf().canvas.draw()
Run Code Online (Sandbox Code Playgroud)
它的作用就像一个魅力...除了清除图形的线条.清除渲染之间的数字显然也会清除BufferRegion对象,因为我更新了标题和颜色条,我还想清除渲染之间的数字.
所以我的问题是,是否有人知道清除图形并保持像素缓冲区完整的方法?我一直没能找到在多文档BufferRegion,copy_from_bbox() …