记笔记——Python、Matplotlib、Basemap

Basemap:

 

basemap在初始化地图的时候实在是太慢了,如果需要画多个图,速度感人。解决思路是把一个画完图的对象存进内存(做个备份),然后再需要新的一张图的时候再读取这个图,需要注意的是deepcopy并不管用,需要更深层次的pickle.dumps和pickle.loads。 代码大致是:

def plotbasemap(self, ...):
    if not self.m:
    self.fig = plt.figure(figsize=(xx,xx))
    map = Basemap(...)
    ...
    self.m = pickle.dumps(map)
    return map
return pickle.loads(self.m)

值得注意的是,这种方法也可以用来/快速/保存读取变量。虽然占用空间大,但好在比较便捷,省空间的存法推荐用numpy存成npy。

import pickle
Dataset = ...
pickle.dump(Dataset, open('save.txt','wb')
data = pickle.load(open('save.txt','wb')

数据转化, DictInList -> ListInDict:

如果你有一个数据格式类似
[
    {
        'a' : 1,
        'b' : -1
    },
    {
        'a' : 2,
        'b' : -2
    },
    {
        'a' : 3,
        'b' : -3
    }
]

想转化为

{
    'a' : [1, 2, 3], 
    'b' : [-1, -2, -3]
}

 

def dataFormatConvert(data):
    return { key : [ p[key] for p in data ] for key in data[0].keys() } if type(data) == list else ...

 

 

发表评论

电子邮件地址不会被公开。