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