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 多线程应用介绍
Dec 19 Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 Python
用Pygal绘制直方图代码示例
Dec 07 Python
python 将字符串转换成字典dict的各种方式总结
Mar 23 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
python 使用正则表达式按照多个空格分割字符的实例
Dec 20 Python
python语言线程标准库threading.local解读总结
Nov 10 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
详解django中Template语言
Feb 22 Python
python入门之井字棋小游戏
Mar 05 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 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程序的方法小结
2012/02/23 PHP
浅析php变量作用域的一些问题
2013/08/08 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
javascript 学习之旅 (1)
2009/02/05 Javascript
javascript 文档的编码问题解决
2009/03/01 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
jQuery Easyui Datagrid实现单行的上移下移及保存移动的结果
2016/08/15 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
如何制作幻灯片(代码分享)
2017/01/06 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
python实现斐波那契递归函数的方法
2014/09/08 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
python离线安装外部依赖包的实现
2020/02/13 Python
Python自带的IDE在哪里
2020/07/01 Python
Python基于template实现字符串替换
2020/11/27 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
用python对oracle进行简单性能测试
2020/12/05 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
英国奢侈皮具品牌:Aspinal of London
2018/09/02 全球购物
兰蔻英国官网:Lancome英国
2019/04/30 全球购物
DBA的职责都有哪些
2012/05/16 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
公司培训欢迎词
2014/01/10 职场文书
总会计师岗位职责
2014/02/19 职场文书
2015年党风廉政建设工作总结
2015/04/09 职场文书
干部理论学习心得体会
2016/01/21 职场文书
MySQL 逻辑备份与恢复测试的相关总结
2021/05/14 MySQL
Python机器学习之决策树和随机森林
2021/07/15 Javascript