numpy.ma.MaskedArray.ctypes
атрибут
-
ma.MaskedArray.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(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.ma.MaskedArray.ctypes.html