我在python中导入mpl_toolkits的底图模块时遇到麻烦.这是我从模块目录运行test.py脚本时得到的结果:
/usr/lib/python2.7/dist-packages/mpl_toolkits/basemap$ python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
from mpl_toolkits.basemap import Basemap, shiftgrid
ImportError: No module named basemap
Run Code Online (Sandbox Code Playgroud)
我无法得到它,因为sys.path在"mpl_toolkits"目录中提供了我确定目录"basemap"的路径列表.没问题import mpl_toolkits.这是我尝试过的事情,手动添加路径,结果:
>>> import sys
>>> sys.path.append('/usr/lib/python2.7/dist-packages/mpl_toolkits/basemap')
>>> import basemap
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "basemap/__init__.py", line 30, in <module>
from mpl_toolkits.basemap import pyproj
ImportError: No module named basemap
Run Code Online (Sandbox Code Playgroud)
我尝试从apt-get,从conda 卸载重新安装底图(仔细按照这些说明),但它没有改变任何东西:我无法导入底图.
谢谢您的帮助
这是我的问题:我使用numpy和python 操作432*46*136*136表示time*(space)包含在numpy数组中的网格.我有一个数组alt,它包含网格点的高度,另一个数组temp存储网格点的温度.
它是一个比较有问题的:如果T1和T2是两个结果,T1[t0,z0,x0,y0]并且T2[t0,z0,x0,y0]在表示温度H1[t0,z0,x0,y0]和H2[t0,z0,x0,y0]米,分别.但我想比较同一高度的点的温度,而不是相同的网格点.
因此,我想修改矩阵的z轴来表示高度而不是网格点.我创建了一个函数conv(alt[t,z,x,y]),它将每个高度的-20到200之间的数字归属.这是我的代码:
def interpolation_extended(self,temp,alt):
[t,z,x,y]=temp.shape
new=np.zeros([t,220,x,y])
for l in range(0,t):
for j in range(0,z):
for lat in range(0,x):
for lon in range(0,y):
new[l,conv(alt[l,j,lat,lon]),lat,lon]=temp[l,j,lat,lon]
return new
Run Code Online (Sandbox Code Playgroud)
但这需要花费太多时间,我无法解决这个问题.我尝试用numpy的通用函数编写它:
def interpolation_extended(self,temp,alt):
[t,z,x,y]=temp.shape
new=np.zeros([t,220,x,y])
for j in range(0,z):
new[:,conv(alt[:,j,:,:]),:,:]=temp[:,j,:,:]
return new
Run Code Online (Sandbox Code Playgroud)
但这不起作用.你有没有想过在python/numpy中这样做而不使用4个嵌套循环?
谢谢