python中numpy.concatenate()和numpy.reshape()函数的使用
作者:互联网
numpy.concatenate()函数
numpy.concatenate() 是一种数组拼接方法,将具有相同结构的array序列拼接成一个array。
numpy提供了numpy.concatenate((a1,a2,…), axis=0)函数,能够一次完成多个数组的拼接,其中a1,a2,…是数组类型的参数,axis是拼接方向,默认值为0,拼接方向可以理解为拼接完成后数量发生变化的方向。axis=0,拼接方向为横轴,需要纵轴结构相同,表示对应列的数组拼接;axis=1,拼接方向为纵轴,需要横轴结构相同,表示对应行的数组拼接;axis=None,则数组在使用前被展平。
numpy.append()和numpy.concatenate()均为numpy数组拼接方法,这两个函数从运行时间方面进行比较的话, numpy.concatenate()效率更高,适合大规模的数组拼接。
examples1:
>>> import numpy as np
>>> a = np.array([1, 2])
>>> b = np.array([3, 4])
>>> np.concatenate((a, b), axis=0)
array([[1,2,3,4])examples2:
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6]])
>>> np.concatenate((a, b), axis=0)
array([[1, 2],
[3, 4],
[5, 6]])
>>> np.concatenate((a, b.T), axis=1)
array([[1, 2, 5],
[3, 4, 6]])
>>> np.concatenate((a, b), axis=None))
array([1, 2, 3, 4, 5, 6])
numpy.reshape()函数
numpy.reshape() 用于重塑数组的形状,作用是在不改变矩阵的数值的前提下修改矩阵的形状。
numpy提供了numpy.reshape(a, newshape, order=‘C’)函数,其中,a:需要被重塑的数组;newshape:整数或整数数组,新的形状应该与原来的形状兼容,即行数和列数相乘后等于a中元素的数量;order:{‘C’,‘F’,‘A’}可选,使用此索引顺序读取a的元素,并使用此索引顺序将元素放置到重新形成的数组中。
简单使用
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> a.reshape(1, 4)
array([[1, 2, 3, 4]])缺省值-1:np.reshape里面的-1代表不知道要给行(或者列)设置为几,reshape函数会根据原矩阵的形状自动调整。
>>> import numpy as np
>>> z = np.array([[1, 2, 3, 4],
[5, 6, 7, 8]])
>>> z.reshape(-1)
array([ 1, 2, 3, 4, 5, 6, 7, 8])
>>> z.reshape(-1, 1)
array([[ 1],
[ 2],
[ 3],
[ 4],
[ 5],
[ 6],
[ 7],
[ 8]])
>>> z.reshape(-1, 2)
array([[ 1, 2],
[ 3, 4],
[ 5, 6],
[ 7, 8]])
z.reshape(-1, 1)是说,我们不知道新z的行数是多少,但是想让z变成只有一列,行数不知的新数组,通过z.reshape(-1,1),numpy自动计算出有8行,新的数组shape属性为(8, 1),与原来的(2, 4)匹配。z.reshape(-1, 2),行数未知,列数等于2,reshape后的shape等于(4, 2)。
标签:concatenate,python,reshape,拼接,np,array,numpy 来源: https://blog.51cto.com/u_15178976/2729139