1

我有一个从串行端口获取并共享的 300x57 字节数组,然后我打算将它直接解压到 numpy 数组中

所以我制作了一个 57 字节大小的 dtype

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:缓冲区对于请求的数组来说太小了

4

1 回答 1

1

数组的形状是元素的数量,而不是它包含的字节数。如果您的元素都是 57 字节大小,那么 300x57 字节缓冲区的大小正好适合初始化大小为 300 的数组:

buff1_np = np.ndarray(300, dtype=onebuffdtype, buffer=shared_buff1.buf)
于 2019-11-08T19:31:54.687 回答