Почему я могу делать "[:]" в массиве NumPy столько раз, сколько я хочу? - PullRequest
3 голосов
/ 27 октября 2019

Я думал, что понял, как работает массив numpy, пока по ошибке не сделал что-то вроде

x = np.array([2,3,1,0])
x[:][:] 

и получил тот же результат, что и x[:], и такой же, как x[:][:][:] А теперьИнтересно, как это возможно, если х 1-D массив!

Я не знаю, слишком ли это просто или я что-то упустил. Спасибо.

1 Ответ

4 голосов
/ 27 октября 2019

Выражение x[:][:], сокращенно от (x[:])[:]. Если вы пишете x[:], то вы генерируете «представление» для массива x, в этом представлении учитываются все элементы x, и, следовательно, он представляет собой пустой массив с точно такой же формой.

Хотя x[:] и x являются разными объектами, они, таким образом, содержат одинаковые данные и имеют одинаковую форму. Позвонив по номеру (x[:])[:], вы тем самым создаете другое представление. Numpy увидит, что x[:] является представлением о x, и, таким образом, создаст другое представление о x, но, таким образом, это снова представление. Таким образом, вы можете повторять один и тот же «трюк» произвольное количество раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...