3

我正在使用一个包含一个函数的包,该函数返回一个多边形顶点列表(我们称之为polylist)。此列表的每个元素(具有数万个元素)具有以下结构

p0 = polylist[0] = 
array([(137.487773, 65.338638), 
       (138.29366, 64.992167),
       (140.625, 64.992167), 
       ...,
       (140.625, 65.402088), 
       dtype=[('ra', '>f8'), ('dec', '>f8')])

要在 中绘制元素polylist,我想使用matplotlib.patches.Polygonor matplotlib.collections.PolyCollection

但是两者都Polygon需要PolyCollection顶点是 shape 的 2d numpy 数组(N,2)。所以我需要转换p0成类似的东西

p0 = 
array([[137.487773, 65.338638], 
       [138.29366, 64.992167],
       [140.625, 64.992167], 
       ...,
       [140.625, 65.402088]])

如果我这样做,np.array(p0, dtype=float)我只会得到p0['ra']

array([137.487773,  138.29366,  140.625,  140.625, ..., 140.009968])

我想到了办法

np.array((v['ra'], v['dec'])).T

或者

np.vstack((v['ra'], v['dec'])).T

有没有更好的方法或任何 numpy 函数来做到这一点?

4

1 回答 1

2

您可以使用

p0.view(('>f8', 2))

请参阅view文档以及http://wiki.scipy.org/Cookbook/Recarray

于 2013-10-31T11:07:01.153 回答