gpt4 book ai didi

python - 复制 NumPy 数组的神秘行为

转载 作者:行者123 更新时间:2023-12-01 03:54:48 25 4
gpt4 key购买 nike

在使用数组的副本时,我注意到一些意外的行为。例如,我有一个 NumPy 数组 (a):

import numpy as np
a = np.random.randint(9, size=(4,4))

输出:

array([[3, 4, 4, 3],
[0, 0, 4, 2],
[6, 3, 1, 6],
[1, 5, 5, 5]])

然后,我复制该数组 (b) 来操作该副本并保持原始数组不变:

b = a #copy of the array
b[b == 2] = 0 #manipulating the copy

但是,现在看来原件和副本都已更改:

b = array([[3, 4, 4, 3],
[0, 0, 4, 0],
[6, 3, 1, 6],
[1, 5, 5, 5]])

a = array([[3, 4, 4, 3],
[0, 0, 4, 0],
[6, 3, 1, 6],
[1, 5, 5, 5]])

我不明白为什么当操作仅应用于副本时原始数组会被更改。这与我对 Matlab 或 R 的期望完全不同。有没有办法防止这种行为?

最佳答案

使用b = a,您仅复制对象的引用,而不是对象本身。看看这个copy功能。简而言之,你必须这样做,b = a.copy()

关于python - 复制 NumPy 数组的神秘行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37657137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com