Numpy的深拷贝和浅拷贝¶
In [1]:
import numpy as np
a = np.array([1,2,3,4,5,6,7,8,9,10])
print(a)
[ 1 2 3 4 5 6 7 8 9 10]
In [2]:
c = a.view()
print(c)
[ 1 2 3 4 5 6 7 8 9 10]
In [3]:
c[0] = 100
print('进行浅拷贝操作...')
print(a)
print(c)
进行浅拷贝操作... [100 2 3 4 5 6 7 8 9 10] [100 2 3 4 5 6 7 8 9 10]
In [4]:
d = a.copy()
d[1] = 100
print('进行深拷贝操作...')
print(a)
print(d)
进行深拷贝操作... [100 2 3 4 5 6 7 8 9 10] [100 100 3 4 5 6 7 8 9 10]
In [5]:
a1 = np.random.randint(0, 10, size=(2,4))
print(a1)
[[7 5 2 1] [7 5 0 6]]
In [6]:
a2 = a1.ravel()
print(a2)
[7 5 2 1 7 5 0 6]
In [7]:
a2[0] = 100
print(a1)
print(a2) # ravel返回的是浅拷贝的值
[[100 5 2 1] [ 7 5 0 6]] [100 5 2 1 7 5 0 6]
In [8]:
a3 = a1.flatten()
a3[1] = 100
print(a1)
print(a3) # flatten返回的是深拷贝的值
[[100 5 2 1] [ 7 5 0 6]] [100 100 2 1 7 5 0 6]