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