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



我用numpy:创建了这个2D array

>>>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()

最新更新