大数据知识体系
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
首页
数据结构与算法
  • JVM
  • Java
  • Scala
  • Python
设计模式
  • MySQL
  • Redis
  • HDFS
  • HBase
  • ClickHouse
  • ElasticSearch
  • Iceberg
  • Hudi
  • Spark
  • Flink
  • Hive
  • Yarn
  • Zookeeper
  • Maven
  • Git
  • 数据仓库
  • 用户画像
  • 指标体系
数据治理
关于
  • JVM

    • JVM 架构
    • JVM 类加载机制
    • JVM 运行时数据区
    • JVM 垃圾回收机制
    • JVM 性能监控与调优
    • JVM 常见错误
  • Java

    • Java基础

      • Java 基础知识
      • Java 基础 - 枚举类
      • Java 基础 - 异常处理
      • Java 基础 - 泛型
      • Java 基础 - 反射
      • Java 基础 - 代理模式
      • Java 基础 - 注解
    • Java集合

    • Java并发编程

    • Java 开发规范
  • Scala

    • Scala 概述
  • Python

    • Numpy

      • 初识 Numpy
      • ndarray 的创建方式
      • NumPy 的数据类型
      • NumPy 数组计算
      • 拷贝
        • 拷贝分类
        • 示例
      • 索引和切片
      • 数学和统计方法
      • 数组形状变换
      • 通用函数
      • 排序
      • 搜索和计数
      • 线性代数
      • 伪随机数生成
      • 广播
      • 文件输入和输出
    • Pandas

      • 初识 Pandas
      • 认识 Series 和 DataFrame
      • Series 和 DataFrame 增删改查
      • Index对象增删改查
      • 普通列和行Index相互转化
      • 快速查看整体信息
      • 数值运算
      • 合并数据集
      • 数值统计与聚合
      • 分组聚合
      • 分类类型
      • 排序和排名
      • 时间序列
      • 文件输入与输出
      • 缺失值处理
      • 字符串处理
      • pandas sql
      • 其它
  • 语言基础
  • Python
  • Numpy
Will
2022-08-04
目录

拷贝

# 拷贝分类

NumPy 中拷贝分为三种情况:

  • 完全不拷贝

    一个数组的任何变化都反映在另一个数组上,包括值变化和形状变化

  • 浅拷贝

    一个数组值会变化会反映在另一个数组上,但是形状不变化

  • 深拷贝

    创建原数组的副本,副本的任何变化都不会反映在原数组上

# 示例

import numpy as np
1
# 完全不拷贝
a = np.arange(12)
b = a
a
b
1
2
3
4
5
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
b[5] = 500
a
b
1
2
3
array([  0,   1,   2,   3,   4, 500,   6,   7,   8,   9,  10,  11])

array([  0,   1,   2,   3,   4, 500,   6,   7,   8,   9,  10,  11])
b is a
1
True
b.shape = (2, 6)
a
b
1
2
3
array([[  0,   1,   2,   3,   4, 500],
       [  6,   7,   8,   9,  10,  11]])

array([[  0,   1,   2,   3,   4, 500],
       [  6,   7,   8,   9,  10,  11]])
# 浅拷贝
a = np.arange(12)
c = a.view()
a
c
1
2
3
4
5
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
c is a
1
False
c.base is a
1
True
c[2] = 200
a
c
1
2
3
array([  0,   1, 200,   3,   4,   5,   6,   7,   8,   9,  10,  11])

array([  0,   1, 200,   3,   4,   5,   6,   7,   8,   9,  10,  11])
c.shape = (12, 1)
a
c
1
2
3
array([  0,   1, 200,   3,   4,   5,   6,   7,   8,   9,  10,  11])

array([[  0],
       [  1],
       [200],
       [  3],
       [  4],
       [  5],
       [  6],
       [  7],
       [  8],
       [  9],
       [ 10],
       [ 11]])
# 深拷贝
a = np.arange(12)
d = a.copy()
a
d
1
2
3
4
5
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
d is a
1
False
a[1] = 100
a
d
1
2
3
array([  0, 100,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11])

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
d.shape = (12, 1)
a
d
1
2
3
array([  0, 100,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11])

array([[ 0],
       [ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10],
       [11]])
上次更新: 2023/11/01, 03:11:44

← NumPy 数组计算 索引和切片→

Theme by Vdoing | Copyright © 2022-2023 Will 蜀ICP备2022002285号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式