Numpy: сборка мусора после нарезки - PullRequest
0 голосов
/ 24 апреля 2018
def foo():
    x = np.ones((10,10))
    return x[:5,:5]

Если я позвоню y = foo(), я получу массив 5x5 (1/4 от значений в x). Но что происходит с другими значениями в x, они сохраняются в памяти или каким-то образом собирают мусор? Я хотел бы понять это.

1 Ответ

0 голосов
/ 24 апреля 2018

Как говорит kindall в комментариях, базовая нарезка в массиве NumPy создает представление исходного массива. Представление должно поддерживать весь исходный объект; Вы можете увидеть ссылку, которую он использует для этого, в атрибуте base представления.

In [2]: x = numpy.ones((10, 10))

In [3]: y = x[:5, :5]

In [4]: y.base is x
Out[4]: True
...