是否有一种优雅而简短的方法可以在一个定义中一次性编写下面编写的函数?这样该函数就可以对具有灵活维数的数组进行操作,并:根据需要添加 s 吗?理想情况下,它也具有N尺寸。
ind = 1:5
view_something(A::AbstractArray{T,1}, ind) where {T} = view(A, ind)
view_something(A::AbstractArray{T,2}, ind) where {T} = view(A, :, ind)
view_something(A::AbstractArray{T,3}, ind) where {T} = view(A, :, :, ind)
view_something(rand(10,10,10), ind)
view_something(rand(10,10), ind)
view_something(rand(10), ind)
Run Code Online (Sandbox Code Playgroud)
我注意到人们可以调用Colon运算符并将 func args 组装在这样的向量中[Colon(),Colon(),...],这是一种可行的方法还是还有其他首选方法?
我想绘制一个以太平洋为中心的南半球地图,并用python matplotlib底图绘制一些东西.
除非我尝试使用底图例程shadedrelief,bluemarble或etopo绘制背景图像,否则一切正常.代码(没有我想要绘制到地图上的东西)看起来像这样:
import numpy as np
from mpl_toolkits.basemap import Basemap
from matplotlib.backends.backend_pdf import PdfPages
latmin = -72.5
latmax = 40.
lonmin = 60.
lonmax = 370.
pp = PdfPages('datamap.pdf')
m = Basemap(projection='merc', llcrnrlat=latmin, urcrnrlat=latmax, llcrnrlon=lonmin, urcrnrlon=lonmax, resolution="c")
m.drawcoastlines(linewidth=0.25)
#m.shadedrelief()
pp.savefig()
pp.close()
Run Code Online (Sandbox Code Playgroud)
当我取消注释m.shadedrelief()时,我得到以下内容:
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
/xyz/datamap.py in <module>()
32
---> 33 m.shadedrelief()
34
/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.pyc in shadedrelief(self, ax, scale, **kwargs)
3997 return self.warpimage(image='shadedrelief',ax=ax,scale=scale,**kwargs)
3998 else:
-> 3999 return self.warpimage(image='shadedrelief',scale=scale,**kwargs)
4000
4001 def etopo(self,ax=None,scale=None,**kwargs):
/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.pyc in warpimage(self, …Run Code Online (Sandbox Code Playgroud)