在进行数据处理时,有时数据会有不同的来源,我们需要进行数据的拼接操作。NumPy中提供了多种进行数组拼接的方法,可以满足各种业务场景中的需求。
数组的切分,是拼接的逆操作,相较于拼接来说,不是那么常用,但是,也可以简单了解一下。
本文的主要内容有:
1、np.concatenate()
2、np.vstack()
3、np.hstack()
4、np.append()
5、拼接的两个特殊对象
6、np.split()
np.concatenate()该函数是进行数组拼接的最通用的函数,其他的数组拼接函数可以理解为是该函数的特化。
如同进行数组的其他操作一样,数组的拼接操作也需要考虑数据轴。
该函数的功能为沿着指定的轴将多个数组连接起来。
函数的参数有:
1、arrays:需要拼接的数组序列
2、axis:指定沿着哪个轴进行拼接,默认值为0
关于多维数组按照指定轴进行拼接,可以理解为:“将两个有多层包装的包括,按照指定的外层包装进行拆包,再重新打包为一个包裹”。所以,当axis=0时,表示将两个多维数组拆开最外层,然后,放到一起,再组装上外层包装。
通过代码来简单举例说明:
有点类似于深拷贝浅拷贝的概念,就看多维数组需要拆分到哪一个粒度。
在使用np.concatenate()进行数组拼接时,需要注意:
1、维度的一致性:参与拼接的数组必须具有相同的形状,除了要拼接的轴以外,其他的维度必须一致。
2、轴的定义:在拼接时,必须明确指定要拼接的轴,否则默认为0轴。
np.vstack()该函数,默认沿着垂直(行)方向将多个数组堆叠起来,等同于沿着0轴拼接。只需要一个参数,用于接收需要拼接的数组序列。
比较简单,后面跟np.hstack()的使用,一起通过代码演示。
np.hstack()该函数沿着水平轴(列)的方向将多个数组堆叠起来,等同于沿着1轴拼接。同样只需要一个参数,用于接收进行拼接的数组序列。
这两个函数的代码示例:
np.append()除了上面的常用拼接函数,还有一个np.append()函数,用于在一个数组的末尾添加值,可以指定轴,会返回一个新的数组。
参数主要有:
1、ary:原始数组
2、values:要添加的值,可以是数组或者标量
3、axis:可选,指定沿着哪个轴进行添加哎,默认为None
通过代码演示下该函数的使用:
该方法不是太常用,了解一下即可。
拼接的两个特殊对象NumPy中还有两个特殊的对象r_和c_,可以用于简化数组的拼接:
可以看到,该对象的主要功能有两个:
1、按照第一个轴进行数组的拼接。
2、基于切片进行数组的创建。
np.c_功能类似
基于第二个轴进行拼接。
下面同样通过代码简单演示:
可以看到,通过将np.r_和np.c_组合使用,可以进行更加灵活便捷的数组拼接。
np.split()在数据处理中拆分的操作,其实不太常用,因为我们可以通过切片,更加便捷实现同样的效果,这里也只做简单介绍。
函数的参数有:
1、ary:要进行拆分的数组
2、indices:指定轴上进行拆分的索引位置
3、axis:指定轴,默认为0
函数返回拆分之后的数组列表。
通过代码简单演示一下:
总结本文简单介绍了NumPy中相对常用的数组拼接和拆分的函数,最灵活常用的就是np.concatenate()函数了,当然,如果是进行二维数组的数据的拼接,np.vstack()和np.hstack()也是挺常用的。在进行数组拆分和拼接操作时,只要对轴的概念比较理解,一般都不会有太大的问题。
以上就是本文的全部内容,感谢您的拨冗阅读,希望对您有所帮助!