В 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 () в качестве решения в многие из моих переменных назначений)