Numpy:复制理解 b = a、b = a.view()、d = a.copy()

一、复制形式 1:b = a 用等号(=)赋值,内存一样,a变化 ,b也会变化

import numpy as np
a = np.arange(12)
b = a

print(b is a)  # 返回 True
b.shape = (3,4)
print ("a.shape=",a.shape)  # a.shape= (3, 4)
print (id(a))   # 2493855732640
print (id(b))   # 2493855732640

二、复制形式 2:c = a.view()进行复制,a和c的内存位置一样,c的值改变a也会对应改变,但c结构变化,a不会变化

import numpy as np
c = a.view()            # 将 a 复制给 c
print(c is a)
print("c=",c)

c.shape = (2,6)             # 改变 c 的结构为2行6列,看 a 是否会变化
print("c.shape=",c.shape)
print ("a.shape=",a.shape)

c[0,4] = 1234             # 改变 矩阵c 第0行4列的值,看 a 的值是否会变化
print("c=",c)
print("a=",a)

print (id(a))    # 2493855144416
print (id(b))   # 2493855144416

结果图:

三、复制形式 3:d = a.copy() ,d和a的内存地址不一样,当 d 数值改变时,a 不会改变

import numpy as np
d = a.copy()
print(d is a)  # False

d[0,0] = 9999
print (d)
print (a)

print(id(d))  # 2493855735440
print(id(a))  # 2493855732640

结果图:

原文地址:https://www.cnblogs.com/wodexk/p/10311293.html

时间: 2024-10-02 22:55:07

Numpy:复制理解 b = a、b = a.view()、d = a.copy()的相关文章

连续张量理解和contiguous()方法使用,view和reshape的区别

连续张量理解和contiguous()方法使用,view和reshape的区别 待办 内存共享: 下边的x内存布局是从0开始的,y内存布局,不是从0开始的张量 For example: when you call transpose(), PyTorch doesn't generate new tensor with new layout, it just modifies meta information in Tensor object so offset and stride are f

NumPy学习(索引和切片,合并,分割,copy与deep copy)

NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程序示例 import numpy as np #索引与切片 array=np.arange(3,15) print(array) print(array[3])#数组下标为3的元素 print('\n') print(array[1:3])#取从下标1到下标3,不包括下标3 print(array[

python numpy复制array

numpy快速复制array 前段时间想到一个算法,需要实现array的自我复制,直接上代码,两种复制方式, 整体复制 a=[[10,10,50,50],[10,10,40,50]] np.tile(a,[4,1])#即向下复制4次,向右不复制 单行复制 a=[[10,10,50,50],[10,10,40,50]] np.tile(b,[1,4]).reshape([-1,4])#即每一行复制4次 原文地址:https://www.cnblogs.com/double-t/p/11063722

numpy.meshgrid()理解

一句话解释numpy.meshgrid()——生成网格点坐标矩阵. 关键词:网格点,坐标矩阵 网格点是什么?坐标矩阵又是什么鬼? 看个图就明白了: 图中,每个交叉点都是网格点,描述这些网格点的坐标的矩阵,就是坐标矩阵. 再看个简单例子 A,B,C,D,E,F是6个网格点,坐标如图,如何用矩阵形式(坐标矩阵)来批量描述这些点的坐标呢? 答案如下:X=[ 原文地址:https://www.cnblogs.com/lvdongjie/p/11419258.html

深入理解Android中View

文章目录 [隐藏] 一.View是什么? 二.View创建的一个概述: 三.View的标志(Flag)系统 四.MeasureSpec 五.几个重要方法简介 5.1 onFinishInflate() 5.2 onMeasure(int, int) 5.3 onLayout(boolean, int, int,int, int) 5.4 onSizeChanged(int, int, int,int) 5.5 onDraw(android.graphics.Canvas) 这回我们是深入到Vie

numpy中的浅复制和深复制

浅复制:主要有两种方式,简单的赋值或者使用视图(view) 简单的赋值:其实就是制造了一个别名,数组并没有被copy成新的一份,当使用其中一个别名改变数组值的时候,另一个别名对应的值一并改变. >>>a = np.arange(12) >>>a array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) >>>b = a >>>b is a True >>>b.shape = 3,4

关于copy深复制与浅复制的理解

浅复制:浅复制(浅拷贝,指针拷贝,shallow copy),源对象和副本对象是同一个对象, 源对象(副本对象)引用计数器 + 1, 相当于做一次retain操作. 本质是:没有产生新的对象 深复制:(深拷贝,内容拷贝,deep copy),源对象和副本对象是不同的两个对象,源对象引用计数器不变, 副本对象计数器            为1(因为是新产生的) 本质是:产生了新的对象 *只有源对象和副本对象都不可变时,才是浅复制,其它都是深复制

numpy 矩阵运算

8.2 矩阵(Matrix)对象 Matrix类型继承于ndarray类型,因此含有ndarray的所有数据属性和方法.Matrix类型与ndarray类型有六个重要的不同点,当你当Matrix对象当arrays操作时,这些不同点会导致非预期的结果. 1)Matrix对象可以使用一个Matlab风格的字符串来创建,也就是一个以空格分隔列,以分号分隔行的字符串. 2)Matrix对象总是二维的.这包含有深远的影响,比如m.ravel()的返回值是二维的,成员选择的返回值也是二维的,因此序列的行为与

深复制VS浅复制(MemberwiseClone方法介绍)

MemberwiseClone方法,属于命名空间System,存在于程序集 mscorlib.dll中.返回值是System.Object.其含义是:创建一个当前object对象的浅表副本. MSDN中的官方解释是: MemberwiseClone 方法创建一个浅表副本,方法是创建一个新对象,然后将当前对象的非静态字段复制到该新对象.如果字段是值类型的,则对该字段执行逐位复制.如果字段是引用类型,则复制引用但不复制引用的对象:因此,原始对象及其复本引用同一对象. 例如:考虑引用对象 A 和 B