Когда вы делаете B = A
, B - это просто ссылка на уже существующий массив A
.NumPy не копирует прямо из соображений эффективности.
Итак, вы должны использовать arr.copy()
для копирования содержимого массива, как в:
In [9]: B = A.copy()
In [10]: A
Out[10]:
matrix([[ 4, 1, -1, 1],
[ 1, 4, -1, -1],
[-1, -1, 5, 1],
[ 1, -1, 1, 3]])
# update an entry in array `B`
In [11]: B[0, 0] = 0
# A is unaffected
In [12]: A
Out[12]:
matrix([[ 4, 1, -1, 1],
[ 1, 4, -1, -1],
[-1, -1, 5, 1],
[ 1, -1, 1, 3]])
# change happens only in array B
In [13]: B
Out[13]:
matrix([[ 0, 1, -1, 1],
[ 1, 4, -1, -1],
[-1, -1, 5, 1],
[ 1, -1, 1, 3]])