当前位置: 首页 > news >正文

Numpy 数组拼接与拆分函数详解

数组拼接

concatenate()

concatenate()函数可以让数组按指定维度进行拼接,以下的例子中都使用矩阵进行演示

concatenate的参数一般有两个,第一个为包含需要进行拼接的矩阵列表或矩阵元组,第二个参数为axis,为0则沿行方向进行拼接,为1则沿列方向拼接

import numpy as np
import torchnp.random.seed(1)
data1 = np.arange(15).reshape(3,5)
data2 = np.arange(15,30).reshape(3,5)
print(data1,end='\n\n')
print(data2,end='\n\n')
print(np.concatenate([data1,data2],axis=0),end='\n\n')
print(np.concatenate((data1,data2),axis=1),end='\n\n')# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]]
# 
# [[15 16 17 18 19]
#  [20 21 22 23 24]
#  [25 26 27 28 29]]
# 
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]
#  [15 16 17 18 19]
#  [20 21 22 23 24]
#  [25 26 27 28 29]]
# 
# [[ 0  1  2  3  4 15 16 17 18 19]
#  [ 5  6  7  8  9 20 21 22 23 24]
#  [10 11 12 13 14 25 26 27 28 29]]

hstack()/vstack()

hstack和vstack中的h代表horizontal(横向的),v代表vertical(竖向的),stack具有堆叠的意思

所以这里的hstack()作用是沿列方向拼接,vstack()作用是沿行方向拼接

import numpy as np
import torchnp.random.seed(1)
data1 = np.arange(15).reshape(3,5)
data2 = np.arange(15,30).reshape(3,5)
print(data1,end='\n\n')
print(data2,end='\n\n')
print(np.hstack([data1,data2]))
print(np.vstack((data1,data2)))
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]]
# 
# [[15 16 17 18 19]
#  [20 21 22 23 24]
#  [25 26 27 28 29]]
# 
# [[ 0  1  2  3  4 15 16 17 18 19]
#  [ 5  6  7  8  9 20 21 22 23 24]
#  [10 11 12 13 14 25 26 27 28 29]]
# [[ 0  1  2  3  4]
#  [ 5  6  7  8  9]
#  [10 11 12 13 14]
#  [15 16 17 18 19]
#  [20 21 22 23 24]
#  [25 26 27 28 29]]

数组切分

split()

split()函数具有将矩阵按指定维度切分的作用

参数如下:第一个参数为要进行切分的数组对象,第二参数为indices_or_sections,也就是进行切分的方法指定,可以为数组或值,axis为0则沿行方向,为1则沿列方向

这里indices_or_sections若为数值,比如为2,则表示把数组分为2等份,若无法分成2等份则会报错

indices_or_sections若为数组,则比如[2,4],并且是沿行切分,

则会按照如下规则切分

每一份为

[:2],[2:4],[4:]

数组参数可以根据需要进行设置,分成几份,每份几行,或几列,都可自定义

下述为一个沿行方向四等分的例子

import numpy as np
import torchnp.random.seed(1)
data1 = np.arange(16).reshape(4,4)
print(data1,end='\n\n')
print(np.split(data1,indices_or_sections=4,axis=0),end='\n\n')# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]
# 
# [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]]), array([[12, 13, 14, 15]])]

 下述为一个将四行数组沿行分为1,2,1的例子

import numpy as np
import torchnp.random.seed(1)
data1 = np.arange(16).reshape(4,4)
print(data1,end='\n\n')
print(np.split(data1,indices_or_sections=[1,3],axis=0),end='\n\n')# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]
# 
# [array([[0, 1, 2, 3]]), array([[ 4,  5,  6,  7],
#        [ 8,  9, 10, 11]]), array([[12, 13, 14, 15]])]

hsplit()/vsplit()

这里hsplit()表示沿列切分,vsplit表示沿行切分

参数只有要切分的数组和indices_or_sections

import numpy as np
import torchnp.random.seed(1)
data1 = np.arange(16).reshape(4,4)
print(data1,end='\n\n')
print(np.hsplit(data1,indices_or_sections=[1,3]),end='\n\n')
print(np.vsplit(data1,indices_or_sections=[1,3]),end='\n\n')# [[ 0  1  2  3]
#  [ 4  5  6  7]
#  [ 8  9 10 11]
#  [12 13 14 15]]
# 
# [array([[ 0],
#        [ 4],
#        [ 8],
#        [12]]), array([[ 1,  2],
#        [ 5,  6],
#        [ 9, 10],
#        [13, 14]]), array([[ 3],
#        [ 7],
#        [11],
#        [15]])]
# 
# [array([[0, 1, 2, 3]]), array([[ 4,  5,  6,  7],
#        [ 8,  9, 10, 11]]), array([[12, 13, 14, 15]])]


http://www.mrgr.cn/news/27298.html

相关文章:

  • 检查一个复数C的实部a和虚部b是否都是有限数值即a和b都不是无限数值、空值cmath.isfinite(x)
  • 51单片机-DS18B20(温度传感器)AT24C02(存储芯片) IIC通信-实验2-温度实时监测(可设置阈值)
  • GitLab CI_CD 从入门到实战笔记
  • 面试爱考 | 设计模式
  • 【编程基础知识】Java语言中字面字符和转义字符的区别
  • 图神经运算符 (GNO)能不能用于炒股?
  • 【spring】spring框架中使用的设计模式有哪些,经典的设计模式应用,spring框架中哪些地方使用了哪些优秀的设计模式
  • 【IP协议】解决 IP 地址不够用的问题(IP地址管理:动态分配、NAT、Ipv6)
  • 如何看待IBM中国研发部裁员?
  • 门店引流神器异形创意LED圆形(饼/盘)显示屏使商业广告更有吸引力
  • 【Python电商项目汇报总结】**采集10万+淘宝商品详情数据注意事项总结汇报**
  • Unity的Button组件进行扩展
  • UCRT深度剖析:打造Windows平台C语言开发的标准化与高效运行时环境
  • 架构师的七大核心能力
  • MySql的基础讲解
  • 链接器和装载器--符号管理
  • 第二十五章 添加数字签名
  • [Python学习日记-21] Python 中的字符编码(上)
  • JAVA:Nginx(轻量级的Web服务器、反向代理服务器)--(1)
  • 通过API接口获取数据:高效、灵活的数据交互之道