首页 > 其他分享 >Numpy矩阵拼接

Numpy矩阵拼接

时间:2023-08-07 23:22:53浏览次数:32  
标签:矩阵 print shape 拼接 数组 np Numpy axis

一、矩阵拼接一、矩阵拼接
numpy矩阵拼接常用方法:

np.append(arr,values,axis)
np.concatenate(arrays,axis,out=None)
np.stack(arrays,axis,out=None)
np.hstack(tup)
np.vstack(tup)

① np.append(arr,values,axis)
支持数组和数组或数组和数的拼接,不支持三个及以上数组的拼接
参数:

arr:需要被添加values的数组
values:添加到数组arr中的值
axis:可选参数,默认值为None。
注:
1、如果axis没有给出,则默认axis=None,arr,values都将先展平成一维数组。
2、如果axis被指定了,那么arr和values需要同为一维数组或者有相同的shape,否则报错:ValueError: arrays must have same number of dimensions
3、axis的最大值为数组arr的维数-1,如arr维数等于1,axis最大值为0;arr维数等于2,axis最大值为1,以此类推。
4、当arr的维数为2(理解为单通道图),axis=0表示沿着行增长方向添加 values;axis=1表示沿着列增长方向添加values
5、当arr的维数为3(理解为多通道图),axis=0,axis=1时同上;axis=2表示沿着图像深度增长方向添加values

import numpy as np
a = [[1,2,3,4]]
b = 5
c = [[5,6,7,8]]
d = np.append(a,b) # 数组和数拼接,默认axis=None
e = np.append(a,c) # 数组和数组拼接,默认axis=None
f = np.append(a,c,axis=0) # 按行增长方向拼接(垂直拼接)
g = np.append(a,c,axis=1) # 按列增长方向拼接(水平拼接) 
print(d)
print(e)
print(f)
print(g)

输出:
image

② np.concatenate(arrays,axis,out=None)
功能与np.append()类似,但是支持多个数组的拼接。
参数:

arrays:一个包含需要组合的数组的元组,这些数组需要满足的要求是:(1)维数相同(2)除axis指定维度外其余维度元素个数对应相等
aixs:维度,指定数组组合的方向,默认为0,即垂直拼接
out:可选参数,是一个多维数组,如果提供该参数,函数返回结果将会保存在out中,当然,out的shape需要与结果相等

import numpy as np
a = [[1,2,3,4]]
b = 5
c = [[5,6,7,8]]
d = np.concatenate((a,b),axis=None) # 数组和数展平成一维数组拼接
e = np.concatenate((a,c)) # 数组和数组拼接,默认axis=0,按行增长方向拼接(垂直拼接)
f = np.concatenate((a,c),axis=1) # 数组和数组拼接,按列增长方向拼接(水平拼接) 
print(d)
print(e)
print(f)

输出:
image

③ np.stack(arrays,axis,out=None)
同样支持多矩阵拼接,不同的是,stack会在指定轴方向上添加一个新的维度,axis默认值为0
参数:

arrays:一个包含需要组合的数组的元组,这些数组需要满足的要求是:(1)维数相同(2)各维度元素个数对应相等(即形状相等)
aixs:维度,指定数组增加哪个维度,以及组合的方向。axis默认值为0,默认增加零轴,并按照零轴方向组合。
out:可选参数,是一个多维数组,如果提供该参数,函数返回结果将会保存在out中,当然,out的shape需要与结果相等

import numpy as np
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
b = np.array([[13,14,15,16],[17,18,19,20],[21,22,23,24]])
print(a.shape)
print(b.shape)
c = np.stack((a,b)) # 默认axis=0,数组和数组在0轴拼接,并在该纬度增加一维
d = np.stack((a,b),axis=1) # axis=1,数组和数组在1轴拼接,并在该纬度增加一维
e = np.stack((a,b),axis=2) # axis=2,数组和数组在2轴拼接,并在该纬度增加一维
print(c, c.shape)
print(d, d.shape)
print(e, e.shape)

输出:
image

④ np.hstack(tup)
水平堆叠,对多维数组来说,水平堆叠相当于在第二个维度做concatenation

import numpy as np
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
b = np.array([[13,14,15,16],[17,18,19,20],[21,22,23,24]])
c = np.hstack((a,b))
print(a, a.shape)
print(b, b.shape)
print(c, c.shape)

输出:
image

⑤ np.vstack(tup)
垂直堆叠,对多维数组来说,垂直堆叠相当于在第一个维度做concatenation

import numpy as np
a = np.array([[1,2,3,4],[5,6,7,8],[9,10,11,12]])
b = np.array([[13,14,15,16],[17,18,19,20],[21,22,23,24]])
c = np.vstack((a,b))
print(a, a.shape)
print(b, b.shape)
print(c, c.shape)

输出:
image

转自:原文链接:https://blog.csdn.net/weixin_44842318/article/details/129783803

标签:矩阵,print,shape,拼接,数组,np,Numpy,axis
From: https://www.cnblogs.com/chuqianyu/p/17613021.html

相关文章

  • P1005 [NOIP2007 提高组] 矩阵取数游戏题解
    题面传送门:P1005[NOIP2007提高组]矩阵取数游戏-洛谷|计算机科学教育新生态(luogu.com.cn)分析题目可知,这道题是一道求最值的问题,第一次看题没有认真读题,以为是每次只在某一行中选一个数,于是想了半天无果。重新读题才发现每次需要每行都取,那么这就很简单了,相当于在每一行......
  • Tutte 矩阵
    基本上是对着这篇博客写的。定义一张图的一张图\(G\)的Tutte矩阵\(\widetilde{A}(G)\)为:\[\widetilde{A}(G)_{i,j}=\begin{cases}0&((i,j)\notinE)\\x_{i,j}&((i,j)\inE\landi<j)\\-x_{i,j}&((i,j)\inE\landi>j)\end{cases}\]即如果\(i,j\)没边相连,那......
  • python教程 入门学习笔记 第7天 打印字符串拼接数值 其它类型转布尔值bool 模拟用户键
    想打印字符串拼接数值例如张三666怎么做?print("张三"+str(666))#直接将数值666转换为字符串,不用赋值也可以3)其它类型转布尔值bool布尔转换规则:所有表示空意义的数据,将被转换成False,其它数据将被转换成Truea=7 #整型数值b="nihao" #字符串c=0 #空值print(boo......
  • 矩阵乘法
    前言目前感觉主要就是矩阵加速,一般·看到大一点的范围(加小一点的范围)可能会用到,是一个神奇的东西。运用在广义矩阵和状态转移上面。板子还是打得比较舒服的。广义矩阵乘法具有结合律的条件是分别满足交换律和结合律,内层对外层满足分配律。[NOIOnline#1入门组]魔法题目描......
  • 软件测试|Python科学计算神器numpy教程(二)
    前言上一篇文章我们介绍了numpy的安装和ndarray的部分知识,本篇文章我们来介绍一下numpy的数组的常用属性以及创建数组相关内容。数组常用属性ndarray.shapeshape属性的返回值一个由数组维度构成的元组,比如2行3列的二维数组可以表示为(2,3),该属性可以用来调整数组维度的......
  • 矩阵乘法 笔记
    众所周知,数是可以进行加减乘除的,那矩阵为啥不可以呢?假设现在我们有两个矩阵\(A\)和\(B\),矩阵大小分别为\(n\timesm\)和\(x\timesy\),矩阵元素对\(mod\)取模。基本运算矩阵加法令\(A+B=C\)。要求:\(n=x\)并且\(m=y\)。其实很简单,就是一一对应着加就行,即......
  • Co-occurrence Network:相关系数矩阵的阈值
    "abs(occor.r)<0.7"这部分代码是对相关系数矩阵进行阈值处理的一部分。这里的"0.7"是一个阈值,用来筛选相关性较强的微生物对。具体来说,对于相关系数矩阵中的每个元素,如果其绝对值小于0.7,则将其设置为0。相关系数范围在-1到1之间,绝对值越接近1表示相关性越强,绝对值越接近0表......
  • 【Python】numpy_科学计算的基础库
    简介Numpy中的数组的存储效率和输入输出性能均优于Python中等价的基本数据结构Numpy是一个开源的Python的科学计算库,用于快速处理任意维度的数组。 Numpy支持常见的数组及矩阵的操作,对于同样的计算任务有着比Python更简洁的指令和更高效的算法。Numpy使用na......
  • 线性方程组数学原理、矩阵原理及矩阵变换本质、机器学习模型参数求解相关原理讨论
    线性方程组数学原理、矩阵原理及矩阵变换本质、机器学习模型参数求解相关原理讨论1.线性方程组0x1:无处不在的线性方程组日常生活或生产实际中经常需要求一些量,用未知数x1,x2,....,xn表示这些量,根据问题的实际情况列出方程组,而最常见的就是线性方程组(当然并不......
  • 矩阵求导与矩阵微分
    简介下面的系列文章来自知乎用户iterator,是我见过最好的矩阵求导教程,没有之一!强烈推荐去看作者原文!矩阵求导的本质与分子布局、分母布局的本质(矩阵求导——本质篇)-知乎矩阵求导公式的数学推导(矩阵求导——基础篇)-知乎矩阵求导公式的数学推导(矩阵求导——进阶篇)-知......