Python Numpy子阵列影响原始二维阵列

Python Numpy子阵列影响原始二维阵列,python,arrays,numpy,Python,Arrays,Numpy,我用numpy创建了这个2D数组: >>>import numpy as np >>>np.random.seed(0) >>>x2 = np.random.randint(10, size=(3, 4)) >>>print(x2) [[5 0 3 3] [7 9 3 5] [2 4 7 6]] 然后我从x2 >>>x2_sub = x2[:2, :2] >>>print(x2_s

我用
numpy
创建了这个
2D数组:

>>>import numpy as np
>>>np.random.seed(0)
>>>x2 = np.random.randint(10, size=(3, 4))
>>>print(x2)
[[5 0 3 3]
 [7 9 3 5]
 [2 4 7 6]]

然后我从
x2

>>>x2_sub = x2[:2, :2]
>>>print(x2_sub)
[[5 0]
 [7 9]]
现在,如果我修改这个子数组,原始数组将被更改!!:

>>>x2_sub[0, 0] = 99
>>>print(x2_sub)
[[99 0]
 [7 9]]
>>>print(x2)
[[99  0  3  3]
 [ 7  9  3  5]
 [ 2  4  7  6]]
我不想更改原始数组。有人能告诉我我在做什么吗?

numpy中的切片创建了一个不同于Python列表的视图。使用
.copy()
显式创建副本:

x2_sub = x2[:2, :2].copy()
numpy中的切片创建不同于Python列表的视图。使用
.copy()
显式创建副本:

x2_sub = x2[:2, :2].copy()

切片将返回
x2
的视图。如果要显式复制,可以在修改之前执行
x2\u sub=x2\u sub.copy()
。切片将返回
x2
的视图。如果要显式复制,可以在修改之前执行
x2\u sub=x2\u sub.copy()