numpy.core.defchararray.chararray.ctypes
-
chararray.ctypes -
Объект для упрощения взаимодействия массива с модулем ctypes.
Этот атрибут создает объект, который упрощает использование массивов при вызове общих библиотек с модулем ctypes. Возвращаемый объект, помимо прочего, имеет атрибуты data, shape и strides (см. Примечания ниже), которые сами возвращают объекты ctypes, которые могут использоваться в качестве аргументов общей библиотеки.
Параметры: - None
Возвращаемое значение: -
c : Python object -
Обладает атрибутами data, shape, strides и т.д.
См. также
numpy.ctypeslibПримечания
Ниже приведены публичные атрибуты этого объекта, которые были задокументированы в «Руководстве по NumPy» (мы опустили незадокументированные публичные атрибуты, а также задокументированные приватные атрибуты):
- data: Указатель на область памяти массива как целое число Python. Эта область памяти может содержать данные, которые не выровнены или не имеют правильного порядка байтов. Область памяти может даже не быть доступной для записи. Флаги массива и тип данных этого массива должны соблюдаться при передаче этого атрибута произвольному коду C, чтобы избежать проблем, которые могут включать зависание Python. Будьте осторожны! Значение этого атрибута точно такое же, как self._array_interface_[‘data’][0].
- shape (c_intp*self.ndim): Массив ctypes длиной self.ndim, где базовый тип — целое число C, соответствующее dtype(‘p’) на этой платформе. Этот базовый тип может быть c_int, c_long или c_longlong в зависимости от платформы. Тип c_intp определяется соответственно в numpy.ctypeslib. Массив ctypes содержит форму базового массива.
- strides (c_intp*self.ndim): Массив ctypes длиной self.ndim, где базовый тип такой же, как и для атрибута shape. Этот массив ctypes содержит информацию о шагах из базового массива. Эта информация о шагах важна для демонстрации того, сколько байтов нужно перепрыгнуть, чтобы перейти к следующему элементу массива.
- data_as(obj): Возвращает указатель на данные, преобразованный в конкретный объект c-types. Например, вызов self._as_parameter_ эквивалентен self.data_as(ctypes.c_void_p). Возможно, вы хотите использовать данные как указатель на массив ctypes с данными с плавающей точкой: self.data_as(ctypes.POINTER(ctypes.c_double)).
- shape_as(obj): Возвращает кортеж формы как массив какого-либо другого типа c-types. Например: self.shape_as(ctypes.c_short).
- strides_as(obj): Возвращает кортеж шагов как массив какого-либо другого типа c-types. Например: self.strides_as(ctypes.c_longlong).
Будьте осторожны при использовании атрибута ctypes, особенно для временных массивов или массивов, созданных на лету. Например, вызов
(a+b).ctypes.data_as(ctypes.c_void_p)возвращает указатель на недействительную память, поскольку массив, созданный как (a+b), удаляется перед следующей строкой Python. Вы можете избежать этой проблемы, используя либоc=a+bилиct=(a+b).ctypes. В последнем случае ct будет содержать ссылку на массив до тех пор, пока ct не будет удален или переназначен.Если модуль 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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.15.4/reference/generated/numpy.core.defchararray.chararray.ctypes.html