我有一个从串口获取并共享的 300x57 字节数组,然后我打算将其直接解封装到 numpy 数组中
所以我创建了一个 57 字节大小的数据类型
onebuffdtype = np.dtype(
"b1, b1, f4, u4, u2, u1, f4, u4, u2, u1, f4, i4, i2, i1, f4, u4, u2, u1, f4, u4, u2, u1")
那么如果
shared_buff1.buf
是缓冲区所在的地方
buff1_np = np.ndarray((300, 57,), dtype=onebuffdtype,
buffer=shared_buff1.buf)
但它说
TypeError: buffer is too small for requested array
最佳答案
数组的形状是元素的数量,而不是它包含的字节数。如果您的元素大小均为 57 字节,则 300x57 字节缓冲区正好适合初始化大小为 300 的数组:
buff1_np = np.ndarray(300, dtype=onebuffdtype, buffer=shared_buff1.buf)
关于python - 如何在 numpy python3+ 中为数组列表创建 dtype,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58772649/