怎么在numpy库中使用concatenate函数拼接数组
这篇文章给大家介绍怎么在numpy库中使用concatenate函数拼接数组,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
数组拼接方法一
思路:首先将数组转成列表,然后利用列表的拼接函数append()、extend()等进行拼接处理,最后将列表转成数组。
示例1:
>>>importnumpyasnp >>>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:
>>>fromtimeimportclockasnow >>>a=np.arange(9999) >>>b=np.arange(9999) >>>time1=now() >>>c=np.append(a,b) >>>time2=now() >>>printtime2-time1 28.2316728446 >>>a=np.arange(9999) >>>b=np.arange(9999) >>>time1=now() >>>c=np.concatenate((a,b),axis=0) >>>time2=now() >>>printtime2-time1 20.3934997107
可知,concatenate()效率更高,适合大规模的数据拼接
PS:更多示例
importnumpyasnp 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(mostrecentcalllast): File"<ipython-input-11-05a280a2cb02>",line1,in<module> e=np.concatenate((a,b),axis=1) ValueError:alltheinputarraydimensionsexceptfortheconcatenationaxismustmatchexactly e=np.concatenate((a,b.T),axis=1) e.shape Out[13]:(2,3) importnumpyasnp 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(mostrecentcalllast): File"<ipython-input-11-05a280a2cb02>",line1,in<module> e=np.concatenate((a,b),axis=1) ValueError:alltheinputarraydimensionsexceptfortheconcatenationaxismustmatchexactly e=np.concatenate((a,b.T),axis=1) e.shape Out[13]:(2,3)
关于怎么在numpy库中使用concatenate函数拼接数组就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
推荐阅读
-
怎么使用numpy中的norm()函数求范数
-
Python如何使用Numpy库
-
使用numpy对数组求平均时怎么忽略nan值
-
numpy中np.nanmax和np.max的区别及坑是什么
-
python numpy中怎么对ndarry按照index增删改查
python numpy中怎么对ndarry按照index增删改查...
-
NumPy下的索引与切片的用法
-
numpy如何实现神经网络反向传播算法
-
Python3.7.1中无法导入Numpy如何解决
-
numpy 中dot()函数的计算方式有哪些
-
怎么在Numpy中使用向量和矩阵
这篇文章将为大家详细讲解有关怎么在Numpy中使用向量和矩阵,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章...