numpy数组拼接方法介绍(concatenate)「建议收藏」

numpy数组拼接方法介绍(concatenate)「建议收藏」数组拼接方法一思路:首先将数组转成列表,然后利用列表的拼接函数append()、extend()等进行拼接处理,最后将列表转成数组。示例1:>>>importnumpyasnp>>>a=np.array([1,2,5])>>>b=np.array([10,12,15])>>>a_list=lis…

大家好,又见面了,我是你们的朋友全栈君。

数组拼接方法一

思路:首先将数组转成列表,然后利用列表的拼接函数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()效率更高,适合大规模的数据拼接

reference:

https://blog.csdn.net/zyl1042635242/article/details/43162031

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130187.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Java开发人员必须掌握的两个Linux魔法工具(四)

    子曰:“工欲善其事,必先利其器。“做一个积极的人 编码、改bug、提升自己 我有一个乐园,面向编程,春暖花开!学习应该是快乐的,在这个乐园中我努力让自己能用简洁易懂(搞笑有趣)的表达来讲解知识或者技术,让学习之旅充满乐趣,这就是写博文的初心。故事旁白:在哈利波特的电影中,每个巫师都有一根自己的魔法棒,魔法棒是用来施展魔法的。而今天我们也要学会使用魔法棒(工具)来施展我们的魔法。魔法地…

  • 第三单元分支结构

    第三单元分支结构

  • markdown语法大全(日语一共多少语法)

    最全的Markdown语法Markdown是Github最常见的文档说明。Markdown的语法简洁明了、学习容易。按照官方MarkdownCheatSheet逐个操作一遍自然就会了。[TOC]这个语法在markdown工具里能够识别,但是在这里不能识别。目录代码:文章目录一级标题##二级标题#####多级标题[MENU]效果显示如上多级标题代码:一级标题##二级标题#####多级标题效果一级标题二级标题多级标题引用与注释代码:一级引用>>二级引

  • 《大话数据结构》目录[通俗易懂]

    《大话数据结构》目录[通俗易懂]由于目录中有比较复杂的格式,所以只能用PDF的形式提供。http://files.cnblogs.com/cj723/%E7%9B%AE%E5%BD%95.pdf

  • netty拆包_http粘包

    netty拆包_http粘包Netty粘包/半包原理与拆包实战(史上最全)疯狂创客圈Java聊天程序【亿级流量】实战系列之13【博客园总入口】本文的源码工程:Netty粘包/半包原理与拆包实战源码本实例是《Netty粘包/半包原理与拆包实战》一文的源代码工程。写在前面大家好,我是作者尼恩。为了完成了一个高性能的Java聊天程序,在前面的文章中,尼恩已经再一次的进行了通讯协议的重新…

  • ireport使用教程视频_proe拖动图形

    ireport使用教程视频_proe拖动图形iReport使用教程【原创】iReport与JasperReport简介1.1  简介JasperReport是报表的引擎部分,界面设计是用iReport。为什么选择这两个软件呢?因为这两个软件都是开源的,即免费的(虽然某些文档收费,但是磨灭不了我们使用它的理由)。JasperReport是一个报表制作程序,用户按照它制定的规则编写一个XML文件,然后得到用户需要输出的

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号