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使用Srapy框架爬虫模拟登陆并抓取知乎内容
Jul 02 Python
利用Python抓取行政区划码的方法
Nov 28 Python
Python入门之三角函数atan2()函数详解
Nov 08 Python
Tensorflow环境搭建的方法步骤
Feb 07 Python
Django学习教程之静态文件的调用详解
May 08 Python
在pycharm 中添加运行参数的操作方法
Jan 19 Python
详解Python函数式编程—高阶函数
Mar 29 Python
Python队列RabbitMQ 使用方法实例记录
Aug 05 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
pandas read_excel()和to_excel()函数解析
Sep 19 Python
python 如何去除字符串头尾的多余符号
Nov 19 Python
Python趣味挑战之教你用pygame画进度条
May 31 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
mysql总结之explain
2012/02/27 PHP
解析crontab php自动运行的方法
2013/06/24 PHP
一个简单至极的PHP缓存类代码
2015/10/23 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
过虑特殊字符输入的js代码
2010/08/05 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
js实现文本框中输入文字页面中div层同步获取文本框内容的方法
2015/03/03 Javascript
JS如何实现文本框随文本的长度而增长
2015/07/30 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
js轮播图代码分享
2016/07/14 Javascript
Bootstrap Search Suggest使用例子
2016/12/21 Javascript
微信小程序 向左滑动删除功能的实现
2017/03/10 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
React手稿之 React-Saga的详解
2018/11/12 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
用python3教你任意Html主内容提取功能
2018/11/05 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
Python远程方法调用实现过程解析
2020/07/28 Python
HTML5适合的情人节礼物有纪念日期功能
2021/01/25 HTML / CSS
交通安全教育制度
2014/02/02 职场文书
项目安全员岗位职责
2015/02/15 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
七一表彰大会简报
2015/07/20 职场文书
老干部局2015年度工作总结
2015/10/22 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
DIV CSS实现网页背景半透明效果
2021/12/06 HTML / CSS
Vue全局事件总线你了解吗
2022/02/24 Vue.js
tomcat下部署jenkins的方法
2022/05/06 Servers