从结构化数组中删除`dtype`字段

时间:2013-10-31 10:28:29

标签: python numpy matplotlib

我正在使用一个包含函数的包,该函数返回一个多边形顶点列表(让我们称之为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.Polygonmatplotlib.collections.PolyCollection

PolygonPolyCollection都需要顶点为形状(N,2)的2d numpy数组。所以我需要将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功能呢?

1 个答案:

答案 0 :(得分:2)

您可以使用

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

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