Я получаю неожиданный результат с двумя массивами Numpy, когда представляю их как указатели Ctypes.Я создал минимальный пример, который воспроизводит проблему, с которой я сталкиваюсь:
import numpy as np
from ctypes import c_float, POINTER
c_float_p = POINTER(c_float)
a = np.array([1], dtype=c_float).ctypes.data_as(c_float_p)
b = np.array([2], dtype=c_float).ctypes.data_as(c_float_p)
print('a: {}, b: {}'.format(a.contents, b.contents))
Когда я запускаю это, я получаю следующий вывод:
a: c_float(2.0), b: c_float(2.0)
Ясно, содержимое первого массивабыли переопределены с содержанием второго.Следовательно, кажется, что два указателя указывают на одно и то же местоположение.Как я могу избежать этого?
Примечание: я использую Python 3.6, Numpy 1.15.4.