Изменение массива A изменяет массив B, только после нарезки A, чтобы получить B, имея разные идентификаторы - PullRequest
0 голосов
/ 24 апреля 2020

В Python, когда вы присваиваете переменную, вы создаете объект с определенным идентификатором и ссылкой на него, а массивы являются изменяемыми. Тем не менее, я не понимаю следующее:

import numpy as np

Запуск:

a = np.array([0,0])
b = a[0]
print(b)
a += np.array([1,1])  # this does not change b
print(b)

Печать, как и ожидалось:

0
0

Запуск:

a = np.array([[0,0],[0,0]])
b = a[:,0]
print(b)
a += np.array([[1,1],[1,1]])  # this changes b
print(b)

Печатает, неожиданно:

[0 0]
[1 1]

Я проверил следующие идентификаторы, и они все разные:

print(id(a[:,0]))
print(id(b))

print(id(a[0,0]))
print(id(b[0]))

(я использую copy.deepcopy () в качестве решения в многие из моих переменных назначений)

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