The problem I have is that when I send an array (array "a" in code below) to a function ("summation" in code below), then assign it to another array (array "d" in code below), any change in elements of array "d" is reflected on array "a" as well.
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()
So when I run this code, the output is:
[[12 14 16 18 20]
[22 24 26 28 30]]
[[11 12 13 14 15]
[16 17 18 19 20]]
[[12 14 16 18 20]
[22 24 26 28 30]]
I would like "a" to be untouched and does not change. Please help me if you have any solution.
The problem is that you are assigning reference of a to d, since a list/in this case numpy array are mutable, any changes to d, will also affect values in a.
EDIT:- @EdChum thanks for the better way Numpy has a builtin copy function, since a is already a numpy array, you could use:-
@Old way which needs an additional import:-
instead of doing
d=a