a = np.arange(16)
b = a
if b is a:
print("b和a是一样的")
print("a的地址:", id(a))
print("b的地址:", id(b))
b.shape = 4, 4
print("a的形状为:", a.shape)
- 指两个数组对象不同,但数据共享。
- 调用view方法,修改数组b数据形状,数组a数据同样修改,但形状不变。
a = np.arange(16)
b = a.view()
if b is a:
print("b和a是同一个对象")
else:
print("b和a不是同一个对象")
print("判断b的base是否和a一样:", b.base is a)
print("判断b是否存在独立的一份数据拷贝:", b.flags.owndata)
print("修改b的形状:", (4, 4))
b.shape = 4, 4
print("输出a的形状:", a.shape)
print("修改b的数据:b[0,2] = 100")
b[0, 2] = 100
print("查看a的数据:", a)
- 调用view方法并对数组进行切片,可以创建对象的浅拷贝副本。
- 两个对象,但切片后修改数据,原数组a数值同样修改。
c = a[1:3]
c[1] = 200
print("修改切片后的数组,然后查看对a的影响:", a)
- 根据原来数组创建一个完全独立的副本,修改数据对原数组无影响,完全两个独立的对象。
- 再数组调用copy方法实现深拷贝。
a = np.arange(16)
b = a.copy()
if b is a:
print("b和a是同一个对象")
else:
print("b和a不是同一个对象")
b[5] = 200
print("数组b:", b)
print("数组a:", a)