numpy.chararray.ctypes
атрибут
-
chararray.ctypes -
Объект для упрощения взаимодействия массива с модулем ctypes.
Этот атрибут создаёт объект, который облегчает использование массивов при вызове общих библиотек с модулем ctypes. Возвращаемый объект содержит, среди прочего, атрибуты data, shape и strides (см. Примечания ниже), которые сами возвращают объекты ctypes, которые могут быть использованы в качестве аргументов общей библиотеки.
- Параметры
-
- None
- Возвращаемое значение
-
-
cPython object -
Обладает атрибутами data, shape, strides и т.д.
-
См. также
Примечания
Ниже приведены публичные атрибуты этого объекта, которые были задокументированы в «Руководстве по 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.chararray.ctypes.html