numpy数组合并和矩阵拼接的实现
作者:小白不白嘿嘿嘿 发布时间:2022-09-05 19:39:54
标签:numpy,数组合并,矩阵拼接
Numpy中提供了concatenate,append, stack类(包括hsatck、vstack、dstack、row_stack、column_stack),r_和c_等类和函数用于数组拼接的操作。
各种函数的特点和区别如下标:
concatenate | 提供了axis参数,用于指定拼接方向 |
---|---|
append | 默认先ravel再拼接成一维数组,也可指定axis |
stack | 提供了axis参数,用于生成新的维度 |
hstack | 水平拼接,沿着行的方向,对列进行拼接 |
vstack | 垂直拼接,沿着列的方向,对行进行拼接 |
dstack | 沿着第三个轴(深度方向)进行拼接 |
column_stack | 水平拼接,沿着行的方向,对列进行拼接 |
row_stack | 垂直拼接,沿着列的方向,对行进行拼接 |
r_ | 垂直拼接,沿着列的方向,对行进行拼接 |
c_ | 水平拼接,沿着行的方向,对列进行拼接 |
直接合并
将两个一维数组合并成一个二维数组:
import torch
import numpy as np
import matplotlib.pyplot as plt
a = np.arange(0,15,0.1)
b = 1.088 * a + 0.638 + np.random.rand() * 10
print(a.shape,b.shape)
points = np.array([a,b])
print(points.shape)
(150,) (150,)
(2, 150)
append拼接
append(arr, values, axis=None)
arr | 待合并的数组的复制(特别主页是复制,所以要多耗费很多内存) |
values | 用来合并到上述数组复制的值。如果指定了下面的参数axis的话,则这些值必须和arr的shape一致(shape[axis]之外都相等),否则的话,则没有要求。 |
axis | 要合并的轴. |
>>> import numpy as np
>>> ar1 = np.array([[1,2,3], [4,5,6]])
>>> ar2 = np.array([[7,8,9], [11,12,13]])
>>> np.append(ar1, ar2) # 先ravel扁平化再拼接,所以返回值为一个1维数组
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13])
>>> np.append(ar1, ar2, axis=0) # 沿第一个轴拼接,这里为行的方向
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[11, 12, 13]])
>>> np.append(ar1, ar2, axis=1) # 沿第二个轴拼接,这里为列的方向
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 11, 12, 13]])
concatenate拼接
concatenate(a_tuple, axis=0, out=None)
a_tuple: | 对需要合并的数组用元组的形式给出 |
axis | 待合并的轴,默认为0 |
>>> import numpy as np
>>> ar1 = np.array([[1,2,3], [4,5,6]])
>>> ar2 = np.array([[7,8,9], [11,12,13]])
>>> ar1
array([[1, 2, 3],
[4, 5, 6]])
>>> ar2
array([[ 7, 8, 9],
[11, 12, 13]])
>>> np.concatenate((ar1, ar2)) # 这里的第一轴(axis 0)是行方向
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[11, 12, 13]])
>>> np.concatenate((ar1, ar2),axis=1) # 这里沿第二个轴,即列方向进行拼接
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 11, 12, 13]])
>>> ar3 = np.array([[14,15,16]]) # shape为(1,3)的2维数组
>>> np.concatenate((ar1, ar3)) # 一般进行concatenate操作的array的shape需要一致,当然如果array在拼接axis方向的size不一样,也可以完成
>>> np.concatenate((ar1, ar3)) # ar3虽然在axis0方向的长度不一致,但axis1方向上一致,所以沿axis0可以拼接
array([[ 1, 2, 3],
[ 4, 5, 6],
[14, 15, 16]])
>>> np.concatenate((ar1, ar3), axis=1) # ar3和ar1在axis0方向的长度不一致,所以报错
hstack
>>> np.hstack((ar1,ar2)) # 水平拼接,沿着行的方向,对列进行拼接
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 11, 12, 13]])
vstack
>>> np.vstack((ar1,ar2)) # 垂直拼接,沿着列的方向,对行进行拼接
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[11, 12, 13]])
vstack
>>> np.dstack((ar1,ar2)) # 对于2维数组来说,沿着第三轴(深度方向)进行拼接, 效果相当于stack(axis=-1)
array([[[ 1, 7],
[ 2, 8],
[ 3, 9]],
[[ 4, 11],
[ 5, 12],
[ 6, 13]]])
column_stack和row_stack
>>> np.column_stack((ar1,ar2)) # 水平拼接,沿着行的方向,对列进行拼接
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 11, 12, 13]])
>>> np.row_stack((ar1,ar2)) # 垂直拼接,沿着列的方向,对行进行拼接
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[11, 12, 13]])
np.r_ 和np.c_
常用于快速生成ndarray数据
>>> np.r_[ar1,ar2] # 垂直拼接,沿着列的方向,对行进行拼接
array([[ 1, 2, 3],
[ 4, 5, 6],
[ 7, 8, 9],
[11, 12, 13]])
>>> np.c_[ar1,ar2] # 水平拼接,沿着行的方向,对列进行拼接
array([[ 1, 2, 3, 7, 8, 9],
[ 4, 5, 6, 11, 12, 13]])
来源:https://blog.csdn.net/weixin_45755332/article/details/112570897
0
投稿
猜你喜欢
- 在日常的python编程中使用这几个函数来简化我们的编程工作,经常使用能使编程效率大大地提高。1. Map 函数map函数可以使用另外一个函
- 排序是个很泛的概念,而且根据被排序的数据量排序方法和侧重又有很大的不同。因此一直没想到从何着手。今天把玩iphone的时候突然又想到这个问题
- 一、前言听说python很流行,因为有很多模块资源,而且导入模块,操作和理解起来很简单。所以在这里记录一下学习python的过程,我相信最重
- StreamReader sr = new StreamReader("E:\\123.txt");//文件路径 str
- str_replace — 子字符串替换 [str_replace]mixed str_replace ( mixed
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN&
- 引言skimage提供了io模块,顾名思义,这个模块是用来图片输入输出操作的。为了方便练习,也提供一个data模块,里面嵌套了一些示例图片,
- Python爬虫之Scrapy环境搭建如何搭建Scrapy环境首先要安装Python环境,Python环境搭建见:https://blog.
- YAML语法规则:http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/下载PyY
- DBI安装:DBI详细信息参考:http://dbi.perl.org/ 1.下载DBI包: wget http://search.cpan
- 1、对继承的理解继承(Inheritance) :代码复用的高级抽象继承是面向对象设计的精髓之一实现了以类为单位的高级抽象级别代码复用继承是
- 1.JSONObject介绍JSONObject-lib包是一个beans,collections,maps,java arrays和xml
- go的各种import最简单的:package main import "fmt"func main() {  
- 1.下载 4个rpm包mysql-community-client-5.7.26-1.el7.x86_64.rpmmysql-communi
- 这样的问题是因为 数据库字符集,表字符集,字段字符集都设为:gbk_chinese_ci 注意数据库连接串里面的 Stmt=Set Name
- 由于mysql数据库的相关内部问题 导致delete from table where col not in (select col fro
- 问题描述:最近用jstree遇到一个问题,父节点选中时,被禁用的子节点也会选中如下解决方案:1、 将jstree升级到最新的版本,v3.3.
- 代码如下:CREATE FUNCTION [dbo].[udf_DaysInMonth] ( @Date DATETIME )
- 最近遇到这样一个问题,在页面上要显示一段自定义的文本,文本如果较长的话需要换行显示。在HTML中可以通过<br/>标签换行,也可
- 近期遇到一个需求,就是用PySide2做出一个GUI,并且要将后台使用Matplotlib绘制的图显示在界面上。自己琢磨了蛮久,网上也搜了不