您的位置:

Python中np.append的用法详解

Python是目前最为流行的编程语言之一,它的使用范围非常广泛,包括科学计算、数据分析、机器学习等多个领域。在众多的Python库中,numpy(Numerical Python)库是非常常用的一个库,它提供了高效的数组和矩阵计算功能。

在numpy库中,np.append是一个非常常用的函数,它可以用来在数组末尾添加元素。但是,对于新手来说,np.append的使用也可能会遇到一些问题,接下来我们将详细介绍np.append的用法。

一、np.append的基本用法

np.append(array, values, axis=None)

np.append函数有三个参数,其中array和values是必填参数,axis是可选参数。

array:表示要添加元素的数组。

values:表示要添加到原数组末尾的元素。可以是单个元素或另一个数组。

axis:表示要扩展的轴。在默认情况下,np.append会将数组展开成一个一维数组,如果指定了轴,那么在特定轴上添加元素。

下面是一个简单的示例:

import numpy as np
a = np.array([1, 2, 3])
b = np.append(a, [4, 5, 6])
print(b)

运行结果为:

[1 2 3 4 5 6]

从结果可以看出,我们成功地将[4, 5, 6]添加到了a数组的末尾。

二、np.append的常用用法

1.在二维数组中添加元素

对于二维数组,我们可以使用np.vstack或np.hstack函数将多个数组堆叠在一起,其中np.vstack是按垂直方向(行顺序)堆叠,np.hstack是按水平方向(列顺序)堆叠。在这种情况下,我们通常使用np.vstack或np.hstack来添加元素,而不是使用np.append。

下面是使用np.vstack添加行的示例:

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6]])
b = np.array([[7, 8, 9]])
c = np.vstack((a, b))
print(c)

运行结果为:

[[1 2 3] [4 5 6] [7 8 9]]

注意,当我们添加一行时,需要将添加的数组放在元组中。

下面是使用np.hstack添加列的示例:

import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5], [6]])
c = np.hstack((a, b))
print(c)

运行结果为:

[[1 2 5] [3 4 6]]

同样地,在添加一列时需要将添加的数组放在元组中。

2.在多维数组中添加元素

对于超过二维的数组,我们需要指定添加元素的轴,否则将会将数组展开成一维数组再进行添加。

下面是一个三维数组的示例:

import numpy as np
a = np.array([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]])
b = np.array([[[13, 14, 15], [16, 17, 18]]])
c = np.append(a, b, axis=0)
print(c)

运行结果为:

[[[ 1 2 3] [ 4 5 6]] [[ 7 8 9] [10 11 12]] [[13 14 15] [16 17 18]]]

从结果可以看出,我们成功地将b数组添加到了a数组的末尾。要注意的是,我们通过axis参数指定了在哪个轴上添加元素。

三、np.append的注意事项

1.会创建一个新数组

调用np.append函数时,会创建一个新的数组,并在其上添加元素。因此,如果需要在原数组上添加元素,应该使用原地操作函数。

2.效率较低

由于np.append会创建一个新数组,因此效率较低。如果需要在循环中多次添加元素,请使用Python列表。

下面是一个在Python列表中添加元素的示例:

lst = [1, 2, 3]
lst.append(4)
print(lst)

运行结果为:

[1, 2, 3, 4]

3.尽量使用numpy数组的切片

对于数组的切片,numpy数组要比Python列表效率要高得多。因此,尽量使用numpy数组的切片来操作数组。

总结

本文详细介绍了np.append函数的用法,从基本用法到常见用法都进行了详细的讲解。np.append是一个很有用的函数,但是需要注意其效率较低这一点,在实际应用中需要根据情况进行选择。