Spec-Zone.ru › NumPy 1.20

numpy.ndarray.ctypes

атрибут

ndarray.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(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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/generated/numpy.ndarray.ctypes.html

Spec-Zone.ru

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