как сделать dtype для списка массивов в numpy python3 + - PullRequest
1 голос
/ 08 ноября 2019

У меня есть массив размером 300x57 байт, взятый из последовательного порта и предоставленный для совместного использования, и я собираюсь распаковать его непосредственно в массив numpy

, поэтому я делаю dtype с размером 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: буфер слишком мал для запрашиваемого массива

1 Ответ

1 голос
/ 08 ноября 2019

Форма массива - это количество элементов, а не байтов, которые он содержит. Если все ваши элементы имеют размер 57 байт, то буфер размером 300x57 является правильным размером для инициализации массива размером 300:

buff1_np = np.ndarray(300, dtype=onebuffdtype, buffer=shared_buff1.buf)
...