简体   繁体   English

Numpy 子数组影响原始二维数组

[英]Numpy subarray affect the original 2d array

I created this 2D array with 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]]

Then I created another subarray from x2然后我从x2创建了另一个子数组

>>>x2_sub = x2[:2, :2]
>>>print(x2_sub)
[[5 0]
 [7 9]]

Now if I modify this subarray, the original array is changed:!:现在如果我修改这个子数组,原来的数组就会改变:!:

>>>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]]

I don't want the original array to change.我不想改变原始数组。 Can anyone tell me what I'm doing worng?谁能告诉我我在做什么?

Slices in numpy create a view unlike Python lists. numpy 中的切片创建与 Python 列表不同的视图 Use .copy() to explicitly create a copy:使用.copy()显式创建副本:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM