「Python数据科学」一文搞定NumPy中常用的数组拼接与切分方法

南宫理的日志录 2024-12-31 08:39:21
引言

在进行数据处理时,有时数据会有不同的来源,我们需要进行数据的拼接操作。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()也是挺常用的。在进行数组拆分和拼接操作时,只要对轴的概念比较理解,一般都不会有太大的问题。

以上就是本文的全部内容,感谢您的拨冗阅读,希望对您有所帮助!

0 阅读:2
南宫理的日志录

南宫理的日志录

深耕IT科技,探索技术与人文的交集