Подтвердить что ты не робот

Как получить адрес памяти массива numpy для C

Я построил массив numpy::

a=np.ndarray([2,3]) 

то я хочу посмотреть, где его данные:

a.data 
>>>Out[213]: <read-write buffer for 0x0482C1D0, size 48, offset 0 at 0x049E87A0> 
a.data 
>>>Out[214]: <read-write buffer for 0x0482C1D0, size 48, offset 0 at 0x049E82A0> 
a.data 
>>>Out[215]: <read-write buffer for 0x0482C1D0, size 48, offset 0 at 0x049E81C0> 

...

почему каждый раз, когда адрес смещения отличается? если я хочу передать данные в c-функцию с помощью c_types с помощью::

ctypes_array = (ctypes.c_char * a.size * 8).from_address(ptr) 

как мне получить значение ptr?

4b9b3361

Ответ 1

Кроме того, посмотрите ndarray.__array_interface__, который является типом, который содержит всю информацию, которую вы после.

В вашем случае

pointer, read_only_flag = a.__array_interface__['data']

Ответ 2

a.data может быть свойством, функция-получатель которого создает новый буферный объект (метаданные) для каждого вызова.

Чтобы получить адрес, см. numpy.ctypeslib.as_ctypes().