尽管数组视图有一些非常好的特性,但是在有些时候明确地复制数组里的数据或子数组也是非常有用的。可以很简单地通过 copy() 方法实现,如果修改这个子数组,原始的数组不会被改变。
代码复现:
# 创建数组的副本
array_3 = np.random.randint(10, size=(3, 4, 5)) # 三维数组
print(array_3)
print("copy----")
array_3_copy = array_3[:3, :4, :5].copy()
print(array_3_copy)
# 如果修改这个子数组,原始的数组不会被改变:
array_3_copy[0, 0, 0] = 0
print("array_3_copy")
print(array_3_copy)
print("array_3")
print(array_3)
运行结果:
[[[5 0 3 3 7]
[9 3 5 2 4]
[7 6 8 8 1]
[6 7 7 8 1]]
[[5 9 8 9 4]
[3 0 3 5 0]
[2 3 8 1 3]
[3 3 7 0 1]]
[[9 9 0 4 7]
[3 2 7 2 0]
[0 4 5 5 6]
[8 4 1 4 9]]]
copy----
[[[5 0 3 3 7]
[9 3 5 2 4]
[7 6 8 8 1]
[6 7 7 8 1]]
[[5 9 8 9 4]
[3 0 3 5 0]
[2 3 8 1 3]
[3 3 7 0 1]]
[[9 9 0 4 7]
[3 2 7 2 0]
[0 4 5 5 6]
[8 4 1 4 9]]]
array_3_copy
[[[0 0 3 3 7]
[9 3 5 2 4]
[7 6 8 8 1]
[6 7 7 8 1]]
[[5 9 8 9 4]
[3 0 3 5 0]
[2 3 8 1 3]
[3 3 7 0 1]]
[[9 9 0 4 7]
[3 2 7 2 0]
[0 4 5 5 6]
[8 4 1 4 9]]]
array_3
[[[5 0 3 3 7]
[9 3 5 2 4]
[7 6 8 8 1]
[6 7 7 8 1]]
[[5 9 8 9 4]
[3 0 3 5 0]
[2 3 8 1 3]
[3 3 7 0 1]]
[[9 9 0 4 7]
[3 2 7 2 0]
[0 4 5 5 6]
[8 4 1 4 9]]]
Process finished with exit code 0