有效地将 numpy 结构化数组转换为二维数组[重复]

问题描述 投票:0回答:1

我有像这样的大型结构化 numpy 数组:

array([(-0.85694593,  -6.3997216, -1.5486323 , 37, 50,   0,  0),
       (-1.1892447 , -11.417209 , -0.21771915, 97, 50,   0,  0),
       (-0.84541476, -11.3712845, -0.8726147 , 75, 50,   0,  0), ...,
       (-0.057407  ,  -6.266104 ,  1.6693828 , 19,  0,  16, 63),
       ( 0.56391037, -11.262503 ,  0.31594068,  0,  0, 150, 63),
       ( 0.9118347 , -11.4296665, -0.3372402 , 96,  0,   0,  0)],
      dtype=[('x', '<f4'), ('y', '<f4'), ('z', '<f4'), ('intensity', 'u1'), ('timestamp', 'u1'), ('m', 'u1'), ('_', 'u1')])

请注意,第 0 至 2 列是浮点数,第 3 至 6 列是整数。

我想有效地将这个数组转换为二维浮点数组。我该如何执行此操作?

python numpy casting numpy-ndarray
1个回答
0
投票

这是一种方法,它至少应该具有内存效率,而且不会太慢:

result = np.empty((arr.shape[0], len(arr.dtype.fields)), np.float32
for i, field in enumerate(arr.dtype.fields):
    result[:, i] = arr[field]

我假设你想要

np.float32
作为结果数组。

© www.soinside.com 2019 - 2024. All rights reserved.