За документация :
Все массивы, сгенерированные базовой секцией, всегда просмотров исходного массива.
Итак, представьте, что ваша A
- фотография Моны Лизы.И вы устанавливаете рамку перед ней, чтобы она содержала только голову Моны Лизы (если смотреть под правильным углом).Если кто-то уберет Мону Лизу, «картина» головы Моны Лизы перед ней также исчезнет.Вам нужно скопировать то, что вы видите в маленькой рамке, на новый холст, чтобы иметь копию, которая была бы безопасна от удаления оригинала.
Вы можете проверить это:
A = numpy.arange(100000000)
B = A[:10]
B[0] = 17
A[:5]
# => [17, 1, 2, 3, 4]
Так что вам абсолютно необходимо скопировать, чтобы отделить ваш новый массив от исходного массива.Вы можете создать копию различными способами.Один явно с copy
, или с array
конструктором.Вы также можете использовать расширенную нарезку, которая не возвращает представление:
B = A[range(10)]
B[1] = 34
A[:5]
# => array([17, 1, 2, 3, 4])
B[:5]
# => array([17, 34, 2, 3, 4])