Мое впечатление, что в 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
имеют одинаковые байты.