我遇到的问题是,当我将一个数组(下面的代码中的数组“a”)发送到一个函数(下面的代码中的“summation”)时,然后将它分配给另一个数组(下面的代码中的数组“d”) ,数组“d”的元素的任何变化也反映在数组“a”上。
<%= date_select :performance, :fine_esercizio, { :order => [:day, :month, :year], :default => (Date.today - 1.months).at_end_of_month}, {:class => "small-4 columns"} %>
因此,当我运行此代码时,输出为:
from numpy import *
def summation(a,b):
a_row = len(a[:,1])
b_row=len(a[1,:])
d = a
for i in range(a_row):
for j in range(a_col):
d[i,j]=d[i,j]+b[i,j]
return d
def define():
a = array([[1,2,3,4,5],[6,7,8,9,10]])
b = array([[11,12,13,14,15],[16,17,18,19,20]])
z=summation(a,b)
print a
print b
print z
define()
我希望“a”不受影响,不会改变。如果您有任何解决方案,请帮助我。
答案 0 :(得分:1)
您可以使用numpy的内置函数:numpy.copy
:
d = numpy.copy(a)
答案 1 :(得分:0)
问题在于你要将a的引用分配给d,因为列表/在这种情况下numpy数组是可变的,对d的任何更改也会影响a中的值。
编辑: - @EdChum感谢更好的方式 Numpy有一个内置的复制功能,因为a已经是一个numpy数组,你可以使用: -
d = a.copy()
@Old方式需要额外导入: -
import copy
d = copy.deepcopy(a)
而不是d=a