обзор памяти и основной столбец / буфер FORTRAN - PullRequest
0 голосов
/ 22 сентября 2018

У меня есть буфер (я получаю его в байтах через cffi) для массива с основными столбцами.

Есть ли способ получить для него представление памяти с правильными атрибутами для буферного протокола Python?Метод cast позволяет мне назначить новую фигуру, но не позволяет определить, является ли представление строкой или основным столбцом.

Например:

# Let b be my buffer of bytes for a column major array of integers
shape = (5, 2, 3)
mv = memoryview(b).cast('i', shape=shape)
# Expectedly not what I want as this is then assumed to be a
# C-style row-major array
mv.to_list()

1 Ответ

0 голосов
/ 24 сентября 2018

На самом деле нет простого способа изменить шаги / форму memoryview без погружения в C. Самый простой способ - использовать NumPy (я создаю буфер здесь, вам следует пропустить эту строку):

shape = (5, 2, 3)
b = bytearray('a' * np.dtype('i').itemsize * np.prod(shape))
a = np.frombuffer(b, dtype='i').reshape(shape)
a.strides = a.strides[::-1]
m = memoryview(a)
print(m.strides)
...