Python 创建不影响旧阵列的新相同numpy阵列

Python 创建不影响旧阵列的新相同numpy阵列,python,arrays,numpy,Python,Arrays,Numpy,好的,在我们进入细节之前,我已经在网站上搜索过任何类似的问题,但大多数都不是对我有效的解决方案 以下是我试图做的: my_array = np.zeros([5,5]) for i in range(4): temp = my_array[:] temp +=1 因此,我需要在不更改的情况下对我的_数组进行尝试并出错。这是一个简化版本,只有一些要点。但在试用中,我同时更改了我的_数组和temp 到目前为止,此web上的解决方案使用了[:]或.copy。我已经尝试了两种方法,但

好的,在我们进入细节之前,我已经在网站上搜索过任何类似的问题,但大多数都不是对我有效的解决方案

以下是我试图做的:

my_array = np.zeros([5,5])

for i in range(4):
    temp = my_array[:]
    temp +=1
因此,我需要在不更改的情况下对我的_数组进行尝试并出错。这是一个简化版本,只有一些要点。但在试用中,我同时更改了我的_数组和temp

到目前为止,此web上的解决方案使用了[:]或.copy。我已经尝试了两种方法,但它仍然影响我的_数组


感谢您的帮助

您需要执行深度复制

import copy

temp = copy.deepcopy(my_array)
在此之后,对temp所做的任何更改都不会反映在我的_阵列上

应该可以了。

复制工作:


嗨,谢谢你的快速回答!我尝试了它,得到的名称“copy”没有定义,所以我尝试了temp.deepcopymy_数组,得到了AttributeError:“numpy.ndarray”对象没有属性“deepcopy”。您需要写入temp=copy.deepcopymy_数组而不是temp.deepcopy,并确保您首先导入副本基本上:将这一行添加到程序导入副本的顶部,不带引号然后使用以下代码temp=copy.deepcopy my_array将阵列复制到temp中。如果行import copy出现错误,请将其安装到您的系统中。我建议安装Anaconda软件包[:]可能的重复使用称为切片。如果对阵列进行切片,则会获得原始阵列表示的视图。其引用的数据仍然与切片之前相同。因此,如果不更改另一个,则无法编辑其中一个。但是,a.copy始终会创建数组的深度副本,这允许您编辑其中一个而不修改另一个。只需在for循环之前执行temp=my_array.copy。哦,是的!我想我以前用错了,非常感谢!
my_array = np.zeros([5,5])

for i in range(4):
    temp = my_array.copy()
    temp +=1

print(temp)
#[[ 1.  1.  1.  1.  1.]
# [ 1.  1.  1.  1.  1.]
# [ 1.  1.  1.  1.  1.]
# [ 1.  1.  1.  1.  1.]
# [ 1.  1.  1.  1.  1.]]

print(my_array)
#[[ 0.  0.  0.  0.  0.]
# [ 0.  0.  0.  0.  0.]
# [ 0.  0.  0.  0.  0.]
# [ 0.  0.  0.  0.  0.]
# [ 0.  0.  0.  0.  0.]]