def foo(): x = np.ones((10,10)) return x[:5,:5]
Если я позвоню y = foo(), я получу массив 5x5 (1/4 от значений в x). Но что происходит с другими значениями в x, они сохраняются в памяти или каким-то образом собирают мусор? Я хотел бы понять это.
y = foo()
x
Как говорит kindall в комментариях, базовая нарезка в массиве NumPy создает представление исходного массива. Представление должно поддерживать весь исходный объект; Вы можете увидеть ссылку, которую он использует для этого, в атрибуте base представления.
base
In [2]: x = numpy.ones((10, 10)) In [3]: y = x[:5, :5] In [4]: y.base is x Out[4]: True