numpy.char.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 = 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–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/generated/numpy.char.chararray.ctypes.html