1

深拷贝和浅拷贝

🚩浅拷贝是视图,而深拷贝是副本。

浅拷贝

import numpy as np
from PIL import Image

im = Image.open('jk.jpg')
im_pillow = np.asarray(im) # 浅拷贝
im_pillow[:,:,1:] = 0


报错的地方显示im_pillow只读。原因在于asarray属于浅拷贝,浅拷贝也称为视图,指的是与原数组共享数据的数组,请注意,只是数据,没有说共享形状
。常见的浅拷贝也有切片操作。下面是一个浅拷贝的例子:

总结:

  • 浅拷贝是共享数据,但是形状可能不同,修改b之后,a也会跟着改变

深拷贝

深拷贝也叫副本,就是完全复制一份原来的数据,完全脱离原来的数据,修改新的副本则不影响原来的数据,通常使用copy()方法。

import numpy as np
from PIL import Image

im = Image.open('jk.jpg')
im_pillow = np.array(im) # 深拷贝
im_pillow[:,:,1:] = 0

则不会报错。

posted @ 2024-06-25 10:01  Bonne_chance  阅读(8)  评论(0编辑  收藏  举报
1