NumPy 数组操作完全指南:增删改查与数据处理

一只小鹿
一只小鹿
发布时间:2026-10-14 | 8人浏览过
原创

本文全面介绍 NumPy 数组的核心操作方法,涵盖从基础安装到高级应用的完整流程。详细讲解如何使用 append、insert 和 delete 方法动态增删元素,利用 sort 进行排序及归一化数据处理。同时演示数组切片、索引访问、类型转换及 CSV 导出技巧,帮助开发者高效掌握 NumPy 在科学计算与机器学习中的基础应用。

NumPy 数组操作完全指南:增删改查与数据处理

NumPy 是 Python 生态中用于科学计算的核心库。本教程将系统讲解如何对 NumPy 数组执行多种元素添加、删除、排序及操作任务。

NumPy 提供了多维数组对象 ndarray,以及基于此派生的掩码数组和掩码多维数组等高级数据结构。

为什么选择 NumPy

为什么要用 NumPy

NumPy 核心提供了 ndarray 对象,支持对任意维度数组进行操作。ndarray 即 N 维数组,其中 N 代表任意整数,这意味着 NumPy 数组可以拥有任意维度的结构。

相较于 Python 内置的 List,NumPy 具备显著优势,支持在 NumPy 阵列上执行高性能操作,例如:

  1. 对数组成员进行排序
  2. 数学和逻辑运算
  3. 输入/输出功能
  4. 统计和线性代数运算

安装 NumPy

安装 NumPy

安装 NumPy 前,需确保电脑已安装 Python 和 Pip。

在终端中运行以下命令:


pip install numpy

随后即可在脚本中导入 NumPy,示例如下:


import numpy

添加数组元素

添加数组元素

可使用 NumPy 模块的 append() 方法向现有数组追加元素。

append() 的标准语法如下:


numpy.append(array, value, axis)

value 会被追加到数组末尾,并返回一个包含所有元素的 ndarray。

参数 axis 为可选整数,用于定义数组的显示维度。若未指定,数组结构将自动展平,后续示例将演示具体用法。

以下示例首先声明一个数组,随后使用 append 方法向其中添加更多值:


import numpy
a = numpy.array([1, 2, 3])
newArray = numpy.append (a, [10, 11, 12])
print(newArray)
# 输出:[ 1 2 3 10 11 12]

添加一列

同样可以使用 NumPy 的 append() 方法插入一列数据。

在下面的例子中,我们创建了一个二维数组并插入了两列:


import numpy

a = numpy.array([[1, 2, 3], [4, 5, 6]]) 
b = numpy.array([[400], [800]])
newArray = numpy.append(a, b, axis = 1)
print(newArray)

"""
输出:
[[ 1  2  3 400]
 [ 4  5  6 800]]
"""

如果不使用 axis 参数,输出结果将变为:

[ 1 2 3 4 5 6 400 800]

这体现了数组结构的扁平化处理。

在 NumPy 中,还可以使用 insert() 方法插入元素或列。两者的区别在于:insert() 允许指定具体的索引位置来添加元素,而 append() 仅能在数组末尾添加值。

Consider the example below:

考虑以下示例:


import numpy
a = numpy.array([1, 2, 3])
newArray = numpy.insert(a, 1, 90) 
print(newArray)
# 输出:[ 1 90 2 3]

此处 insert() 方法在索引 1 处添加元素。注意 Python 数组索引从 0 开始计数。

追加一行

同样可以使用 append() 方法向数组添加行,操作方式与附加元素类似:


import numpy
a = numpy.array([[1, 2, 3], [4, 5, 6]])
newArray = numpy.append(a, [[50, 60, 70]], axis = 0)
print(newArray)
"""
输出“
[[ 1 2 3]
 [ 4 5 6]
 [50 60 70]]
"""

删除数组元素

删除元素

可以使用 NumPy 模块的 delete() 方法从数组中移除元素:


import numpy 
a = numpy.array([1, 2, 3]) 
newArray = numpy.delete(a, 1, axis = 0) 
print(newArray)
# 输出:[1 3]

本例中,我们有一个一维数组,使用 delete() 方法删除了索引 1 处的元素。

删除一行

同理,也可以使用 delete() 方法删除行数据。

下面的例子展示了如何从二维数组中删除指定行:


import numpy 
a = numpy.array([[1, 2, 3], [4, 5, 6], [10, 20, 30]]) 
newArray = numpy.delete(a, 1, axis = 0)
print(newArray)
"""
输出:
[[ 1 2 3]
 [10 20 30]]
"""

在 delete() 方法中,首先传入数组,随后指定要删除元素的索引。上例中,我们删除了索引为 1 的行元素。

检查数组是否为空

检查 NumPy 数组是否为空

可以使用 size 方法返回数组中元素的总数。

在下面的例子中,通过 if 语句结合 ndarray.size 检查数组是否包含元素,其中 ndarray 代表任意给定的 NumPy 数组:


import numpy

a = numpy.array([1, 2, 3]) 
if(a.size == 0): 
  print("The given Array is empty") 
else: 
  print("The array = ", a)
# 输出:The array = [1 2 3]

上述代码中,数组包含三个元素,因此非空,判断条件返回 false。若数组无元素,if 条件将变为 true 并打印空消息。例如当数组等于:


a = numpy.array([])

上述代码将会输出:

The given Array is empty

查找值的索引

查找值的索引

要查找特定值对应的索引,可使用 NumPy 模块的 where() 方法,如下例所示:


import numpy
a = numpy.array([1, 2, 3, 4, 5])
print("5 is found at index: ", numpy.where(a == 5))
# 输出:5 is found at index: (array([4]),)

如果仅需获取索引值,可编写如下代码:


import numpy

a = numpy.array([1, 2, 3, 4, 5]) 
index = numpy.where(a == 5)
print("5 is found at index: ", index[0])
#输出: 5 is found at index: [4]

数组切片与函数应用

NumPy 数组切片

数组切片是从给定数组中提取子集的过程。可以使用冒号( : )运算符对数组进行切片,并指定索引的起始和结束位置,例如:


array[from:to]

下面的例子中提取从索引 2 到索引 5 的元素:


import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[2:5])
# 输出:A subset of array a = [3 4 5]

若想提取最后三个元素,可通过负切片完成操作,如下所示:


import numpy
a = numpy.array([1, 2, 3, 4, 5, 6, 7, 8])
print("A subset of array a = ", a[-3:])
# 输出:A subset of array a = [6 7 8]

将函数作用于所有数组元素

在下面的例子中,我们创建一个 lambda 函数,并传入一个数组,使其应用于所有元素:


import numpy
addition = lambda x: x + 2
a = numpy.array([1, 2, 3, 4, 5, 6])
print("Array after addition function: ", addition(a))
# 输出:Array after addition function: [3 4 5 6 7 8] 

在此例中,创建了一个 lambda 函数,使每个元素递增 2。

获取数组长度与类型转换

NumPy 数组的长度

要获取 NumPy 数组的长度,可使用 size 属性,如下所示:


import numpy 
a = numpy.array([1, 2, 3, 4, 5, 6]) 
print("The size of array = ", a.size)
# 输出:The size of array = 6

从 list 创建 NumPy 数组

假设你有一个列表:

l = [1, 2, 3, 4, 5]

现在要根据这个列表创建一个数组,可以使用 NumPy 模块的 array() 方法:


import numpy 
l = [1, 2, 3, 4, 5] 
a = numpy.array(l) 
print("The NumPy array from Python list = ", a)
# 输出:The NumPy array from Python list = [1 2 3 4 5]

同样,使用 array() 方法,也可以从元组创建 NumPy 数组。如下所示:


import numpy
t = (1, 2, 3, 4, 5) 
a = numpy.array(t) 
print("The NumPy array from Python Tuple = ", a)
# 输出:The NumPy array from Python Tuple = [1 2 3 4 5]

将 NumPy 数组转换为 list

要将数组转换为 list,可以使用 NumPy 模块的 tolist() 方法。


import numpy 
a = numpy.array([1, 2, 3, 4, 5]) 
print("Array to list = ", a.tolist())
# 输出:Array to list = [1, 2, 3, 4, 5]

在这段代码中,我们简单地调用了 tolist() 方法,该方法将数组转换为列表。然后将新创建的列表打印到输出屏幕。

导出为 CSV 文件

把 NumPy 数组导出为 CSV

要将数组导出为 CSV 文件,可以使用 NumPy 模块的 savetxt() 方法,如下所示:


import numpy 
a = numpy.array([1, 2, 3, 4, 5]) 
numpy.savetxt("myArray.csv", a)

此代码将在 Python 代码文件所在路径下生成 CSV 文件。当然也可以指定具体路径。

该文件的内容如下:

1.000000000000000000e+00 2.000000000000000000e+00 3.000000000000000000e+00 4.000000000000000000e+00 5.000000000000000000e+00

你可以删除额外填充的零,如下所示:


numpy.savetxt("myArray.csv", a,fmt='%.2f')

数组排序与归一化

对 NumPy 数组排序

可以使用 NumPy 模块的 sort() 方法对 NumPy 数组进行排序:

sort() 函数有一个可选参数 axis(整数),默认为 -1。axis 指定我们要对数组进行排序的轴。-1 表示将根据最后一个轴对数组进行排序。


import numpy 
a = numpy.array([16, 3, 2, 6, 8, 10, 1]) 
print("Sorted array = ", numpy.sort(a))
# 输出:Sorted array = [ 1 2 3 6 8 10 16]

在这个例子中,我们在 print 语句中调用了 sort() 方法。数组 a 被传递给 sort 函数。

归一化数组

归一化数组是指将数组的值置于某个定义范围的过程。例如,我们想要在 -1 和 1 之间对数组进行归一化,依此类推。

归一化的公式如下:

x = (x – xmin) / (xmax – xmin)

现在把这个公式用于我们的数组。要查找数组中的最大和最小项,可以分别用 NumPy 的 max() 和 min() 方法。


import numpy 
x= numpy.array([400, 800, 200, 700, 1000, 2000, 300]) 
xmax = x.max() 
xmin = x.min() 
x = (x - xmin)/(xmax - xmin) 
print("After normalization array x = \n", x)
"""
输出:
After normalization array x =
 [0.11111111 0.33333333 0.     0.27777778 0.44444444 1.
 0.05555556]
"""

数组索引访问

数组索引

索引指向数组中的一个元素。在下面的例子中,分别用到了一维和二维数组中的索引:


import numpy 
a = numpy.array([20, 13, 42, 86, 81, 9, 11]) 
print("Element at index 3 = ", a[3])
# 输出:Element at index 3 = 86

下面是二维数组:


import numpy 
a = numpy.array([[20, 13, 42], [86, 81, 9]]) 
print("Element at index a[1][2] = ", a[1][2])
# 输出:Element at index a[1][2] = 9

索引 [1][2] 表示第二行和第三列(索引从 0 开始)。因此在屏幕上输出 9 。

数组合并与总结

将 NumPy 数组附加到另一个数组上

可以使用 append() 方法将 NumPy 数组附加到另一个 NumPy 数组上。


import numpy 
a = numpy.array([1, 2, 3, 4, 5]) 
b = numpy.array([10, 20, 30, 40, 50]) 
newArray = numpy.append(a, b) 
print("The new array = ", newArray)
# 输出:The new array = [ 1 2 3 4 5 10 20 30 40 50]

在此例中,创建两个 NumPy 数组 a, b 。然后把两个数组传给 append()。当数组 b 作为第二个参数传递时,将被添加到数组 a 的末尾。

总结

正如大家所见,NumPy 数组用起来非常简单。在使用很多机器学习库时,NumPy 数组非常重要。可以说 NumPy 是人工智能的大门。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表