Есть ли способ проверить, используют ли массивы NumPy одни и те же данные?

У меня сложилось впечатление, что в NumPy два массива могут совместно использовать одну и ту же память. Возьмем следующий пример:

import numpy as np
a=np.arange(27)
b=a.reshape((3,3,3))
a[0]=5000
print (b[0,0,0]) #5000

#Some tests:
a.data is b.data #False
a.data == b.data #True

c=np.arange(27)
c[0]=5000
a.data == c.data #True ( Same data, not same memory storage ), False positive

Итак, bявно не копировал a; он просто создал некоторые новые метаданные -и прикрепил их к тому же буферу памяти, который использует a. Есть ли способ проверить, ссылаются ли два массива на один и тот же буфер памяти?

Мое первое впечатление было использовать a.data is b.data, но это возвращает false. Я могу выполнить a.data == b.data, который возвращает True, но я не думаю, что это проверяет, чтобы убедиться, что aи bсовместно используют один и тот же буфер памяти, только блок памяти, на который ссылается a, и тот, на который ссылается bимеют одинаковые байты.

38
задан Peter Mortensen 9 October 2014 в 17:53
поделиться