Указатель Cython MemoryView на пустой массивPython

Программы на Python
Anonymous
 Указатель Cython MemoryView на пустой массив

Сообщение Anonymous »

В документации Cython обсуждается передача указателя на представление памяти с помощью например,:

Код: Выделить всё

cdef double[::1] x_view = x  # some array
cdef double* ptr = &x_view[0]
однако, когда в этом массиве x нет элементов (

Код: Выделить всё

x.size == 0
), попытка доступа к x_view[0] не удалась. Для библиотеки C, для которой я создаю интерфейс, передача указателя NULL приводит к ошибке сегмента, поэтому я не могу просто проверить x.size и передать NULL.
Вместо этого мне нужно передать указатель на действительный блок памяти размера 0. Использование старого интерфейса массива numpy и передача x.data работает даже в случае пустого массива например x = np.array([]), но я пытаюсь перейти к использованию типизированных представлений памяти с объединенными типами, чтобы избежать дублирования кода и обеспечить более легко реализуемую безопасность типов.
Существует ли общепринятый способ справиться с этой ситуацией? Или есть ли планы по созданию такой функции, как x_view.ptr, которая будет обрабатывать этот случай внутри себя?

Подробнее здесь: https://stackoverflow.com/questions/797 ... mpty-array

Вернуться в «Python»