自学内容网 自学内容网

numpy教程:numpy中赋值和复制

在 Numpy 中,赋值和复制的区别在于,赋值(直接使用 = 操作符)只是创建了对原始数组的一个引用,而 复制(使用 copy() 方法)会创建一个新的数组,独立于原数组。

让我们通过代码来解释这一点。

示例代码:

import numpy as np

tang_array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 赋值:tang_array2 是 tang_array 的引用
tang_array2 = tang_array
tang_array2[1, 1] = 10

# 打印结果
print("tang_array2:\n", tang_array2)
print("tang_array:\n", tang_array)

# 复制:tang_array3 是 tang_array 的独立副本
tang_array3 = tang_array.copy()
tang_array3[1, 1] = 1000

# 打印结果
print("tang_array3:\n", tang_array3)
print("tang_array:\n", tang_array)

输出结果:

tang_array2:
 [[ 1  2  3]
 [ 4 10  6]
 [ 7  8  9]]

tang_array:
 [[ 1  2  3]
 [ 4 10  6]
 [ 7  8  9]]

tang_array3:
 [[   1    2    3]
 [   4 1000    6]
 [   7    8    9]]

tang_array:
 [[ 1  2  3]
 [ 4 10  6]
 [ 7  8  9]]

解析:

  1. 赋值(tang_array2 = tang_array

    • tang_array2 并没有创建一个新的数组,而是 tang_array 的一个引用,它们指向同一个内存地址。
    • 当我们修改 tang_array2[1,1]tang_array 也会同步变化,因为它们共享同一块内存空间。
  2. 复制(tang_array3 = tang_array.copy()

    • tang_array3 创建了 tang_array 的一个独立副本,二者完全独立,修改 tang_array3 并不会影响 tang_array
    • 当我们修改 tang_array3[1,1] 时,tang_array 保持不变。

总结:

  • 赋值:仅仅创建了对同一数组的一个新引用,修改任何一个都会影响另一个。
  • 复制:创建了一个新的、独立的数组,修改副本不会影响原始数组。

原文地址:https://blog.csdn.net/sunyuhua_keyboard/article/details/142988110

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!