numpy.core.defchararray.chararray.ctypes
атрибут
-
chararray.ctypes -
Объект для упрощения взаимодействия массива с модулем ctypes.
Этот атрибут создаёт объект, который упрощает использование массивов при вызове общих библиотек с модулем ctypes. Возвращаемый объект имеет, среди прочих, атрибуты data, shape и strides (см. Примечания ниже), которые сами возвращают объекты ctypes, которые могут использоваться в качестве аргументов общей библиотеки.
Параметры: - None
Возвращаемое значение: -
c : Python 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(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 параметр, который вернёт целое число, равное атрибуту 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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.16.1/reference/generated/numpy.core.defchararray.chararray.ctypes.html