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使用自定义user-agent抓取网页的方法
Apr 15 Python
python 中的列表生成式、生成器表达式、模块导入
Jun 19 Python
利用python实现周期财务统计可视化
Aug 25 Python
python文件操作的简单方法总结
Nov 07 Python
python学习将数据写入文件并保存方法
Jun 07 Python
增大python字体的方法步骤
Jul 05 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
Sep 17 Python
PyCharm 2020.2.2 x64 下载并安装的详细教程
Oct 15 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
PyQt 如何创建自定义QWidget
Mar 24 Python
Python实现socket库网络通信套接字
Jun 04 Python
Python多线程实用方法以及共享变量资源竞争问题
Apr 12 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 printf输出格式使用说明
2010/12/05 PHP
thinkPHP微信分享接口JSSDK用法实例
2017/07/07 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
JavaScript执行效率与性能提升方案
2012/12/21 Javascript
jQuery javaScript捕获回车事件(示例代码)
2013/11/07 Javascript
js调试工具Console命令详解
2014/10/21 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
js Array.slice的8种不同用法示例
2019/07/10 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
python基础教程之udp端口扫描
2014/02/10 Python
Python字符串格式化输出方法分析
2016/04/13 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
详解python3中zipfile模块用法
2018/06/18 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
python实现把二维列表变为一维列表的方法分析
2019/10/08 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
Python加速程序运行的方法
2020/07/29 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
三星美国官网:Samsung美国
2017/02/06 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
网络方面基础面试题
2012/11/16 面试题
土地转让协议书
2014/04/15 职场文书
公司委托书格式范文
2014/10/09 职场文书
2014年店长工作总结
2014/11/17 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
教师个人发展总结
2015/02/11 职场文书
捐书仪式主持词
2015/07/04 职场文书
MySql分区类型及创建分区的方法
2022/04/13 MySQL
Win11更新失败并提示0xc1900101
2022/04/19 数码科技