美文网首页
numpy的深浅拷贝与python list的深浅拷贝

numpy的深浅拷贝与python list的深浅拷贝

作者: 劲草浅躬行 | 来源:发表于2019-07-14 22:04 被阅读0次

numpy中array数据类型的转置(transpose)

arr=np.arange(16).reshape(2,2,4)
arr2=arr.copy() #深拷贝
print(arr)
arr3=arr.transpose((1,0,2)) #arr.transposse并不会改变arr本身的值,返回值是变了的
print(arr3)

arr4=arr2.swapaxes(0,1) #同arr2.transpose(1,0,2)。并且也不改变arr2的值。返回新的值方便连起来
print(arr2)
print(arr4)

numpy array的深浅拷贝 & python list的深浅拷贝

  1. python list


  • list2=list1 是赋值操作,不是拷贝。两个是同一个对象的引用。故而同变化
  • list2=list1.copy()是浅拷贝,相当于list2引用一个新对象,然后把list1中的值拷贝到这个新对象中。但是如果list1=[1,[1,2],3]包含嵌套,嵌套第一层拷贝过去的是值,第二层保存的实际是地址,所以拷贝过去的也是地址,这样修改list2[1][0]=3的话,实际上list1的相应的值也会发生改变。
  • 使用列表推导式list2=[i for i in list1]同list1.copy(),相当于第一层是深拷贝,内层由于保存的是地址,属于浅拷贝。
  • 使用for循环,逐个将list1中元素append到list2中,同列表推导式
  • 使用切片list2=list1[1:]虽然也是生成新的list,但是同样对内层是浅拷贝
  • list2=copy.deepcopy(list1)真正深拷贝
  1. numpy array


    在这里插入图片描述

    数组切片是原始数组的视图,这意味着数据不会被复制,视图上的任何修改都会被直接反映到源数组上.
    array1,array2,array3,array4实际指向同一个内存值,任意修改其中的一个变量,其他变量值都会被修改。
    若想要得到的是ndarray切片的一份副本而非视图,就需要显式的进行复制操作函数copy()
    array5=array1.copy() #对原始的array1的复制
    array6=array1[1:4].copy() #对切片array1[1:4]的复制
    那么,修改array5或array6,就不会影响array1。

相关文章

  • numpy的深浅拷贝与python list的深浅拷贝

    numpy中array数据类型的转置(transpose) numpy array的深浅拷贝 & python l...

  • 11.Python之深浅拷贝

    Python中的深浅拷贝 浅拷贝浅拷贝只拷贝一个外壳变成自己的,里面的内容是复用的被拷贝对象的。list_1 = ...

  • 2018-08-29

    深浅拷贝 1.根据拷贝内容的不同,分为深浅拷贝 深拷贝:内容...

  • Python深浅拷贝

    深浅拷贝 首先来个准备知识: list1 = ['我爱你','中国','亲爱的母亲'] list2 = list1...

  • python 深浅拷贝

  • Python深浅拷贝

    在python中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝...

  • Python深浅拷贝

    预备知识一——python的变量及其存储 在详细的了解python中赋值、copy和deepcopy之前,我们还是...

  • Python深浅拷贝

    导入模块import copy names = ['lilei','hanmei',['lll','rrrr']]...

  • python深浅拷贝

    最近在复习python相关的基础,然后想到了曾经面试遇到过深浅拷贝得问题,我想对于初学者来说,还是很有必要去学习的...

  • python深浅拷贝

网友评论

      本文标题:numpy的深浅拷贝与python list的深浅拷贝

      本文链接:https://www.haomeiwen.com/subject/eqxwkctx.html