numpy concatenate数组拼接方法示例介绍


Posted in Python onMay 27, 2019

数组拼接方法一

思路:首先将数组转成列表,然后利用列表的拼接函数append()、extend()等进行拼接处理,最后将列表转成数组。

示例1:

>>> import numpy as np
>>> a=np.array([1,2,5])
>>> b=np.array([10,12,15])
>>> a_list=list(a)
>>> b_list=list(b)

>>> a_list.extend(b_list)

>>> a_list
[1, 2, 5, 10, 12, 15]
>>> a=np.array(a_list)
>>> a
array([ 1, 2, 5, 10, 12, 15])

该方法只适用于简单的一维数组拼接,由于转换过程很耗时间,对于大量数据的拼接一般不建议使用。 

数组拼接方法二

思路:numpy提供了numpy.append(arr, values, axis=None)函数。对于参数规定,要么一个数组和一个数值;要么两个数组,不能三个及以上数组直接append拼接。

示例2:

>>> a=np.arange(5)
>>> a
array([0, 1, 2, 3, 4])
>>> np.append(a,10)
array([ 0, 1, 2, 3, 4, 10])
>>> a
array([0, 1, 2, 3, 4])

 

>>> b=np.array([11,22,33])
>>> b
array([11, 22, 33])
>>> np.append(a,b)
array([ 0, 1, 2, 3, 4, 11, 22, 33])

 

>>> a
array([[1, 2, 3],
    [4, 5, 6]])
>>> b=np.array([[7,8,9],[10,11,12]])
>>> b
array([[ 7, 8, 9],
    [10, 11, 12]])
>>> np.append(a,b)
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])

numpy的数组没有动态改变大小的功能,numpy.append()函数每次都会重新分配整个数组,并把原来的数组复制到新数组中。

数组拼接方法三

思路:numpy提供了numpy.concatenate((a1,a2,...), axis=0)函数。能够一次完成多个数组的拼接。其中a1,a2,...是数组类型的参数

示例3:

>>> a=np.array([1,2,3])
>>> b=np.array([11,22,33])
>>> c=np.array([44,55,66])
>>> np.concatenate((a,b,c),axis=0) # 默认情况下,axis=0可以不写
array([ 1, 2, 3, 11, 22, 33, 44, 55, 66]) #对于一维数组拼接,axis的值不影响最后的结果

 

>>> a=np.array([[1,2,3],[4,5,6]])
>>> b=np.array([[11,21,31],[7,8,9]])
>>> np.concatenate((a,b),axis=0)
array([[ 1, 2, 3],
    [ 4, 5, 6],
    [11, 21, 31],
    [ 7, 8, 9]])

>>> np.concatenate((a,b),axis=1) #axis=1表示对应行的数组进行拼接
array([[ 1, 2, 3, 11, 21, 31],
    [ 4, 5, 6, 7, 8, 9]])

对numpy.append()和numpy.concatenate()两个函数的运行时间进行比较

示例4:

>>> from time import clock as now
>>> a=np.arange(9999)
>>> b=np.arange(9999)
>>> time1=now()
>>> c=np.append(a,b)
>>> time2=now()
>>> print time2-time1
28.2316728446
>>> a=np.arange(9999)
>>> b=np.arange(9999)
>>> time1=now()
>>> c=np.concatenate((a,b),axis=0)
>>> time2=now()
>>> print time2-time1
20.3934997107

可知,concatenate()效率更高,适合大规模的数据拼接

PS:更多示例

import numpy as np

a = np.array([[1, 2], [3, 4]])

a.shape
Out[3]: (2, 2)

b = np.array([[5, 6]])

b.shape
Out[5]: (1, 2)

np.concatenate((a, b))
Out[6]: 
array([[1, 2],
    [3, 4],
    [5, 6]])

c= np.concatenate((a, b))

c.shape
Out[8]: (3, 2)

d = np.concatenate((a, b), axis=0)

d.shape
Out[10]: (3, 2)

e = np.concatenate((a, b), axis=1)
Traceback (most recent call last):

 File "<ipython-input-11-05a280a2cb02>", line 1, in <module>
  e = np.concatenate((a, b), axis=1)

ValueError: all the input array dimensions except for the concatenation axis must match exactly


e = np.concatenate((a, b.T), axis=1)

e.shape
Out[13]: (2, 3)


import numpy as np
a = np.array([[1, 2], [3, 4]])
a.shape
Out[3]: (2, 2)
b = np.array([[5, 6]])
b.shape
Out[5]: (1, 2)
np.concatenate((a, b))
Out[6]: 
array([[1, 2],
    [3, 4],
    [5, 6]])
c= np.concatenate((a, b))
c.shape
Out[8]: (3, 2)
d = np.concatenate((a, b), axis=0)
d.shape
Out[10]: (3, 2)
e = np.concatenate((a, b), axis=1)
Traceback (most recent call last):
 File "<ipython-input-11-05a280a2cb02>", line 1, in <module>
  e = np.concatenate((a, b), axis=1)
ValueError: all the input array dimensions except for the concatenation axis must match exactly

e = np.concatenate((a, b.T), axis=1)
e.shape
Out[13]: (2, 3)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现html转ubb代码(html2ubb)
Jul 03 Python
centos系统升级python 2.7.3
Jul 03 Python
python简单实现获取当前时间
Aug 27 Python
python3读取MySQL-Front的MYSQL密码
May 03 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 Python
基于Django signals 信号作用及用法详解
Mar 28 Python
python re的findall和finditer的区别详解
Nov 15 Python
分享Python获取本机IP地址的几种方法
Mar 17 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 #Python
python安装numpy和pandas的方法步骤
May 27 #Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
May 27 #Python
Python之NumPy(axis=0 与axis=1)区分详解
May 27 #Python
Python3.7 新特性之dataclass装饰器
May 27 #Python
Python3多目标赋值及共享引用注意事项
May 27 #Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 #Python
You might like
php结合ajax实现手机发红包的案例
2016/10/13 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
网页禁用右键实现代码(JavaScript代码)
2009/10/29 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
javascript JSON操作入门实例
2010/04/16 Javascript
有趣的javascript数组定义方法
2010/09/10 Javascript
js string 转 int 注意的问题小结
2013/08/15 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
2017/01/20 Javascript
简单实现js菜单栏切换效果
2017/03/04 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
[56:35]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第一局
2016/03/06 DOTA
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
Python3.x中自定义比较函数
2015/04/24 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
python pandas 组内排序、单组排序、标号的实例
2018/04/12 Python
python递归全排列实现方法
2018/08/18 Python
如何利用Boost.Python实现Python C/C++混合编程详解
2018/11/08 Python
Python WEB应用部署的实现方法
2019/01/02 Python
深入了解python中元类的相关知识
2019/08/29 Python
python实现简单俄罗斯方块
2020/03/13 Python
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
电气工程师岗位职责
2014/01/01 职场文书
党员对照检查剖析材料
2014/10/13 职场文书
上下班时间调整通知
2015/04/23 职场文书
MySQL创建定时任务
2022/01/22 MySQL
Python加密技术之RSA加密解密的实现
2022/04/08 Python