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 ljust rjust center输出
Sep 06 Python
Python实现带百分比的进度条
Jun 28 Python
Python选课系统开发程序
Sep 02 Python
python 排序算法总结及实例详解
Sep 28 Python
Python编程实现粒子群算法(PSO)详解
Nov 13 Python
Python3.6安装及引入Requests库的实现方法
Jan 24 Python
完美解决在oj中Python的循环输入问题
Jun 25 Python
django从请求到响应的过程深入讲解
Aug 01 Python
Ubuntu18.04中Python2.7与Python3.6环境切换
Jun 14 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
Jul 01 Python
python函数参数(必须参数、可变参数、关键字参数)
Aug 16 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 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的安全
2006/10/09 PHP
php 301转向实现代码
2008/09/18 PHP
Django中通过定时任务触发页面静态化的处理方式
2018/08/29 PHP
js获取当前地址 JS获取当前URL的示例代码
2014/02/26 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
jQuery+css实现的切换图片功能代码
2016/01/27 Javascript
分析js闭包引起的事件注册问题
2016/03/29 Javascript
关于在Servelet中如何获取当前时间的操作方法
2016/06/28 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
详解vue2父组件传递props异步数据到子组件的问题
2017/06/29 Javascript
javascript编程开发中取色器及封装$函数用法示例
2017/08/09 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
element中el-container容器与div布局区分详解
2020/05/13 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
python抓取豆瓣图片并自动保存示例学习
2014/01/10 Python
Python中类型检查的详细介绍
2017/02/13 Python
python实现Floyd算法
2018/01/03 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
PHP如何设置和取得Cookie值
2015/06/30 面试题
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
土木工程个人自荐信范文
2013/11/30 职场文书
运动会解说词200字
2014/02/06 职场文书
合同意向书范本
2014/07/30 职场文书
2015年护士节活动策划方案
2015/05/04 职场文书
交心谈心活动总结
2015/05/11 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
Python jiaba库的使用详解
2021/11/23 Python
nginx共享内存的机制详解
2022/03/21 Servers