Spec-Zone.ru › NumPy 2.0

numpy.ma.MaskedArray.ctypes

атрибут

ma.MaskedArray.ctypes

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

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

Параметры:
None
Возвращает:
cОбъект Python

Обладает атрибутами 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') на данной платформе (см. c_intp). Этот базовый тип может быть ctypes.c_int, ctypes.c_long или ctypes.c_longlong в зависимости от платформы. Массив ctypes содержит форму базового массива.

_ctypes.strides

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

_ctypes.data_as(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(obj)[source]

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

_ctypes.strides_as(obj)[source]

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

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

Примеры

>>> import ctypes
>>> x = np.array([[0, 1], [2, 3]], dtype=np.int32)
>>> x
array([[0, 1],
       [2, 3]], dtype=int32)
>>> x.ctypes.data
31962608 # may vary
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32))
<__main__.LP_c_uint object at 0x7ff2fc1fc200> # may vary
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint32)).contents
c_uint(0)
>>> x.ctypes.data_as(ctypes.POINTER(ctypes.c_uint64)).contents
c_ulong(4294967296)
>>> x.ctypes.shape
<numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1fce60> # may vary
>>> x.ctypes.strides
<numpy._core._internal.c_long_Array_2 object at 0x7ff2fc1ff320> # may vary

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

Spec-Zone.ru

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