将位域数组加载为ndarray

时间:2014-07-03 11:46:57

标签: python numpy data-structures memory-alignment bit-fields

我正在开发科学的测量设备接口。我需要将数据(从套接字接收)加载为numpy数组。

数据是8960字节缓冲区,具有5120个14位整数值。那么,加载它的方法是什么? 我尝试过使用ctypes:

class PackedValue(ct.BigEndianStructure):
    _fields_ = [("v", ct.c_uint16, 14)]

DataArray = PackedValue * 10

values = DataArray.from_buffer_copy(data)

但由于数组对齐,未正确加载值。然后 - 如何将其转换为numpy数组,因为调用

nda_values = np.ctypeslib.as_array(values)

发生以下异常:

AttributeError: 'PackedValue' object has no attribute '__array_interface__'

那么,如何使用dtype = int16将接收到的数据加载到numpy ndarray中? 或者有更快的方法来加载数据而不使用ctypes?

0 个答案:

没有答案