обзор памяти и основной столбец / буфер FORTRAN

1

У меня есть буфер (я получаю его как байты через 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()
Теги:
python-3.x
python-cffi

1 ответ

0

На самом деле нет простого способа изменить шаг/форму 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)
  • 0
    Благодарю. Кажется, что единственное решение, которое вы предлагаете, не требует написания расширения C для установки атрибутов буфера. Я открыл проблему в трекере ошибок Python - bugs.python.org/issue34778

Ещё вопросы

Сообщество Overcoder
Наверх
Меню