我有一维结构化数组,例如([(1,2),(3,4)])并希望将其转换为2D numpy数组([[1,2],[3,4]] )。现在我正在使用列表理解,然后是np.asarray()
list_of_lists = [list(elem) for elem in array_of_tuples]
array2D = np.asarray(list_of_lists)
这看起来效率不高 - 有更好的方法吗?感谢。
注意:这个问题的初始版本提到了" numpy数组元组"而不是一维结构化数组。这可能对我这个迷茫的python新手很有用。
答案 0 :(得分:3)
在评论中,您声明数组是一维的,dtype为[('x', '<f4'), ('y', '<f4'), ('z', '<f4'), ('confidence', '<f4'), ('intensity', '<f4')]
。结构化数组中的所有字段都是相同的类型('<f4'
),因此您可以使用view
方法创建二维视图:
In [13]: x
Out[13]:
array([(1.0, 2.0, 3.0, 4.0, 5.0), (6.0, 7.0, 8.0, 9.0, 10.0)],
dtype=[('x', '<f4'), ('y', '<f4'), ('z', '<f4'), ('confidence', '<f4'), ('intensity', '<f4')])
In [14]: x.view('<f4').reshape(len(x), -1)
Out[14]:
array([[ 1., 2., 3., 4., 5.],
[ 6., 7., 8., 9., 10.]], dtype=float32)
在这种情况下,view
方法会产生展平结果,因此我们必须使用reshape
方法将其重塑为二维数组。