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中operator模块的操作符使用示例总结
Jun 28 Python
Python 闭包的使用方法
Sep 07 Python
python正则表达式re之compile函数解析
Oct 25 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
Apr 28 Python
基于Python开发chrome插件的方法分析
Jul 07 Python
python3 打开外部程序及关闭的示例
Nov 06 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
Dec 10 Python
python 采用paramiko 远程执行命令及报错解决
Oct 21 Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 Python
python代码打印100-999之间的回文数示例
Nov 24 Python
在 Linux/Mac 下为Python函数添加超时时间的方法
Feb 20 Python
详解pytorch tensor和ndarray转换相关总结
Sep 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
2017/10/10 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
JQuery 常用方法基础教程
2009/02/06 Javascript
加载 Javascript 最佳实践
2011/10/30 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
2016/08/24 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
浅析Vue实例以及生命周期
2018/08/14 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
[01:00:30]TFT vs VGJ.T Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
基于Django静态资源部署404的解决方法
2019/07/28 Python
Python collections中的双向队列deque简单介绍详解
2019/11/04 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
Django自带的用户验证系统实现
2020/12/18 Python
如何用python实现一个HTTP连接池
2021/01/14 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
Boom手表官网:瑞典手表品牌,设计你的手表
2019/03/11 全球购物
上海微创软件面试题
2012/06/14 面试题
总经理秘书工作职责
2013/12/26 职场文书
实习生岗位职责
2014/04/12 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
Pandas搭配lambda组合使用详解
2022/01/22 Python