Неожиданный результат с массивами указателей data_as для Numpy ctypes - PullRequest
0 голосов
/ 18 января 2019

Я получаю неожиданный результат с двумя массивами 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.

1 Ответ

0 голосов
/ 18 января 2019

Оказывается, приведенный выше пример работает, как и ожидалось, когда я обновил Numpy до версии 1.16.0.

...