首页 > 编程语言 >python之numpy (5 分割和复制)

python之numpy (5 分割和复制)

时间:2024-08-15 10:51:52浏览次数:11  
标签:分割 python list np 复制 print array numpy copied

分割

分割指将矩阵分割为几个小部分,以便于后续的计算需要。

split

import numpy as np
m=np.random.random((3,3))
print(m) 
sp=np.split(m,3,axis=0)
ssp=np.split(m,3,axis=1)
print(sp,ssp,sep='\n')
[[0.37324751 0.93319494 0.18961048]
 [0.81433081 0.37722575 0.00708714]
 [0.91463482 0.63293916 0.37207095]]
[array([[0.37324751, 0.93319494, 0.18961048]]), array([[0.81433081, 0.37722575, 0.00708714]]), array([[0.91463482, 0.63293916, 0.37207095]])]
[array([[0.37324751],
       [0.81433081],
       [0.91463482]]), array([[0.93319494],
       [0.37722575],
       [0.63293916]]), array([[0.18961048],
       [0.00708714],
       [0.37207095]])]
请按任意键继续. . .

使用split时,要指定axis参数,当axis=1时,表示横向即每一横行分割成三部分;当axis=0时,表示列行,即每一纵行分割成三部分。除此之外,还有vsplit和hsplit函数也可达到此功能。

vsplit和hsplit

import numpy as np
m=np.random.random((3,3))
print(m) 
vsp=np.vsplit(m,3)
hsp=np.hsplit(m,3)
print(vsp,hsp,sep='\n')
[[0.9873962  0.2239429  0.41554062]
 [0.08370767 0.07352826 0.00597415]
 [0.15575024 0.12947366 0.51808192]]
[array([[0.9873962 , 0.2239429 , 0.41554062]]), array([[0.08370767, 0.07352826, 0.00597415]]), array([[0.15575024, 0.12947366, 0.51808192]])]
[array([[0.9873962 ],
       [0.08370767],
       [0.15575024]]), array([[0.2239429 ],
       [0.07352826],
       [0.12947366]]), array([[0.41554062],
       [0.00597415],
       [0.51808192]])]
请按任意键继续. . .

同理,vsplit表示纵向分割成三部分(每一纵行分割成三部分),即分割结果为三行;而hsplit即横向分割成三部分(每一横行分割成三部分),即分割结果为三列。

注:对于axis=0或1是对应行还是列,仁者见仁智者见智,每种理解都有所不同,只要大家能够对应相应的结果即可。

此种分割方法均为平均分割,不能不等分割,而array_split可实现不等分割。

array_split

import numpy as np
m=np.random.random((3,3))
print(m) 
sp1=np.array_split(m,2,axis=0)
sp2=np.array_split(m,2,axis=1)
print(sp1,sp2,sep='\n')
[[0.05494222 0.34537749 0.701553  ]
 [0.89039863 0.56461006 0.93649615]
 [0.60022758 0.37980877 0.18820387]]
[array([[0.05494222, 0.34537749, 0.701553  ],
       [0.89039863, 0.56461006, 0.93649615]]), array([[0.60022758, 0.37980877, 0.18820387]])]
[array([[0.05494222, 0.34537749],
       [0.89039863, 0.56461006],
       [0.60022758, 0.37980877]]), array([[0.701553  ],
       [0.93649615],
       [0.18820387]])]
请按任意键继续. . .

原矩阵为3×3矩阵,而要被分割为两个矩阵,只能是不等分割。

复制

在 Python 中,copy方法用于创建对象的副本,特别适用于那些可变对象,如列表、字典和集合等。这个方法有助于避免对原对象的修改影响到副本,或者在需要操作对象的副本而不是原始对象时。

copy(浅copy,shallow copy)

original_list = [1, 2, 3]
copied_list = original_list.copy()
print(copied_list)
print(copied_list is original_list)
[1, 2, 3]
False
请按任意键继续. . .

....is.... 可以检验两者是否为同一对象,即两者地址是否相同。

在此例子中,copy后的copied_list和original_list内容相同但并非同一个对象。

copy.deepcopy(深拷贝)

  • 浅拷贝:仅复制对象本身及其直接引用的对象,不复制引用对象所指向的内存区域。例如,list.copy()创建的副本只复制了列表的外层结构,列表中的元素对象仍然是相同的。
  • 深拷贝:创建对象及其所有引用对象的完整副本。对于包含嵌套对象的情况,深拷贝会递归地复制所有层次的对象。
import copy
original_list = [1, [2, 3]]
copied_list =original_list.copy()
copied_list1=copy.deepcopy(original_list)
print(copied_list)
print(copied_list is original_list)
print(id(copied_list[1])==id(original_list[1]))
print(id(copied_list[1])==id(copied_list1[1]))
[1, [2, 3]]
False
True
False
请按任意键继续. . .

深拷贝不仅原列表和现列表地址不一样,而且原列表和现列表中不可变对象的地址也不同。

标签:分割,python,list,np,复制,print,array,numpy,copied
From: https://blog.csdn.net/2301_80199493/article/details/141205687

相关文章

  • python之numpy(4 选择数据及合并)
    选择数据importnumpyasnpm=np.random.random((3,3))print(m)print(m[0],m[1][1],sep='\n')print(m[1,1])print(m[1,:])print(m[:,1])结果:[[0.25960570.047399260.76332494][0.865032270.290489970.79591841][0.50535280.201822340.19601046]][......
  • windows保姆级的pycharm+anaconda搭建python虚拟环境
    (一)pycharm安装1.下载(1)从官网下载 ,一般来说选择社区版就够用了。我这里选择2024.1.6的windows版本OtherVersions-PyCharmGetpastreleasesandpreviousversionsofPyCharm.https://www.jetbrains.com/pycharm/download/other.html 2.安装(1)双击下载好的pycharm安......
  • PAT-1006 换个格式输出整数 python实现
    1.题目本题较为简单,只需要获取数字的各位数再分别按要求拼接到一起即可。2.代码如下  """输入:23423输出:BBSSS1234SS123"""#本题较为简单,只需要获取数字的各位数再分别按要求拼接到一起即可n=int(input())#获取输入的数字r......
  • python图片处理
    设置图片像素fromPILimportImagedefset_image(path,width=280):"""设置图片像素"""#打开图片image=Image.open(path)#原来大小original_width,original_height=image.size#设置新的图片大小new_width,new_height=w......
  • 如何解决MySQL主从复制延时问题
    MySQL主从复制是面试中不可避开的重要一环,里面的知识点虽然基础,但是能回答全的同学不多,今天我们再来老生常谈一下。本文全文内容如下。  1.MySQL主从1.1什么是MySQL主从?MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL......
  • java语言,MySQL数据库;电影推荐网站 30760(免费领源码)计算机毕业设计项目推荐万套实战教
    摘 要随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的电影推荐网站;电影推荐网站的管理工作系统化、规范化,也会提高平台形象,提高管理效率。本电影推荐网站是针对目前电影推荐网站的实际需求,从实际工作出发,对过去的电影......
  • java语言,MySQL数据库;基于Web的高校知识共享系统设计与实现 32050(免费领源码)计算机毕业
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对高校知识共享系统等问题,对高校知识共享系统进行研究分析,然后开发设计出高校知识共享系统以......
  • java语言,MySQL数据库;23825基于java的员工考勤系统(免费领源码)计算机毕业设计项目推荐万
    摘 要由于数据库和数据仓库技术的快速发展,员工考勤系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。考勤管理系统对处理对象和服务对象,自身的系统结构,处理能力,都将适应技术发展的要求发生重大的变化。员工考勤系统除了具有共享系统的全部功能以外,能通过......
  • Manim的一个用于数学动画的 Python 库中渲染代码的功能。
       Code 函数是Manim(一个强大的数学动画库)中的一个重要工具,旨在将代码片段以视觉化的方式呈现。在教育和演示场合中,向观众展示算法或代码逻辑时,清晰的视觉效果是必不可少的。通过 Code 函数,用户可以轻松地将特定编程语言的代码导入,并且自定义其外观,包括字体、颜色、背景......
  • python系列&deep_study系列:一文讲清chatGPT的发展历程、能力来源和复现它的关键之处
    这里写目录标题一文讲清chatGPT的发展历程、能力来源和复现它的关键之处1.ChatGPT是什么2.ChatGPT以及GPT系列模型2.1GPT-1/2/32.2GPT-3.5(InstructGPT)3.复现chatGPT的难点3.1海量的数据3.2超大规模的模型架构3.3深度人员参与(SFT,FeedME,PPO)3.4长期技术积累3......