Spec-Zone.ru › NumPy 1.18

numpy.ma.masked_array.ctypes

атрибут

masked_array.ctypes

Объект для упрощения взаимодействия массива с модулем ctypes.

Этот атрибут создает объект, который упрощает использование массивов при вызове общих библиотек с модулем ctypes. Возвращаемый объект имеет, среди прочего, атрибуты data, shape и strides (см. Примечания ниже), которые сами возвращают объекты ctypes, которые могут использоваться в качестве аргументов общей библиотеки.

Параметры
None
Возвращает
cPython object

Обладает атрибутами data, shape, strides и т.д.

См. также

numpy.ctypeslib

Примечания

Ниже приведены публичные атрибуты этого объекта, которые были описаны в «Руководстве по NumPy» (мы опустили недокументированные публичные атрибуты, а также документированные приватные атрибуты):

_ctypes.data

Указатель на область памяти массива в виде целого числа Python. Эта область памяти может содержать данные, которые не выровнены или не в правильном порядке байтов. Область памяти может даже не быть доступной для записи. Флаги массива и тип данных этого массива должны учитываться при передаче этого атрибута в произвольный C-код, чтобы избежать проблем, которые могут включать завершение работы Python. Пользователь будьте осторожны! Значение этого атрибута точно такое же, как self._array_interface_['data'][0].

Обратите внимание, что, в отличие от data_as, ссылка на массив не будет сохранена: код типа ctypes.c_void_p((a + b).ctypes.data) приведет к указателю на удалённый массив и должен быть написан как (a + b).ctypes.data_as(ctypes.c_void_p)

_ctypes.shape

(c_intp*self.ndim): Массив ctypes длиной self.ndim, где базовый тип — целое число C, соответствующее dtype('p') на этой платформе. Этот базовый тип может быть ctypes.c_int, ctypes.c_long или ctypes.c_longlong в зависимости от платформы. Тип c_intp определяется соответствующим образом в numpy.ctypeslib. Массив ctypes содержит форму базового массива.

_ctypes.strides

(c_intp*self.ndim): Массив ctypes длиной self.ndim, где базовый тип такой же, как для атрибута shape. Этот массив ctypes содержит информацию о шагах из базового массива. Эта информация о шагах важна для того, чтобы показать, сколько байтов нужно перепрыгнуть, чтобы добраться до следующего элемента в массиве.

_ctypes.data_as(self, obj) [source]

Возвращает указатель данных, преобразованный в конкретный объект c-types. Например, вызов self._as_parameter_ эквивалентен self.data_as(ctypes.c_void_p). Возможно, вы хотите использовать данные в качестве указателя на массив ctypes с плавающей точкой: self.data_as(ctypes.POINTER(ctypes.c_double)).

Возвращаемый указатель будет ссылаться на массив.

_ctypes.shape_as(self, obj) [source]

Возвращает кортеж формы как массив какого-либо другого типа c-types. Например: self.shape_as(ctypes.c_short).

_ctypes.strides_as(self, obj) [source]

Возвращает кортеж шагов как массив какого-либо другого типа c-types. Например: self.strides_as(ctypes.c_longlong).

Если модуль ctypes недоступен, то атрибут ctypes объектов массива всё ещё возвращает что-то полезное, но объекты ctypes не возвращаются, и вместо этого могут быть подняты ошибки. В частности, у объекта по-прежнему будет атрибут as_parameter, который вернёт целое число, равное атрибуту data.

Примеры

>>> import ctypes
>>> x
array([[0, 1],
       [2, 3]])
>>> x.ctypes.data
30439712
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_long))
<ctypes.LP_c_long object at 0x01F01300>
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_long)).contents
c_long(0)
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_longlong)).contents
c_longlong(4294967296L)
>>> x.ctypes.shape
<numpy.core._internal.c_long_Array_2 object at 0x01FFD580>
>>> x.ctypes.shape_as(ctypes.c_long)
<numpy.core._internal.c_long_Array_2 object at 0x01FCE620>
>>> x.ctypes.strides
<numpy.core._internal.c_long_Array_2 object at 0x01FCE620>
>>> x.ctypes.strides_as(ctypes.c_longlong)
<numpy.core._internal.c_longlong_Array_2 object at 0x01F01300>

© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/generated/numpy.ma.masked_array.ctypes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API