0
点赞
收藏
分享

微信扫一扫

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 也会同步变化,因为它们共享同一块内存空间。
  1. 复制(tang_array3 = tang_array.copy()
  • tang_array3 创建了 tang_array 的一个独立副本,二者完全独立,修改 tang_array3 并不会影响 tang_array
  • 当我们修改 tang_array3[1,1] 时,tang_array 保持不变。

总结:

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


举报

相关推荐

0 条评论