一篇文章学会numpy
简介
本文讲解如何使用numpy。
简介
NumPy是Python语言中用于科学计算的一个开源库。这个库提供了许多功能,特别是对于数组处理以及线性代数操作方面。
下面我们来介绍几个NumPy的主要功能:
1. Ndarray 数据类型
ndarray
是 NumPy 模块中的一种数据类型,它是一个由同类型元素集合组成的多维数组(也就是 N 维数组)。 并且该数据类型具有很多特殊的属性和方法,比如 shape
、dtype
、reshape()
、mean()
等。
2. 数组操作
NumPy 库提供了很多针对数组的操作函数,包括创建数组、复制和排序等。
- 创建数组:使用
numpy.array()
函数。 - 复制:使用
copy()
方法。 - 排序:使用
sort()
方法。
3. 数组索引、切片和迭代
与普通 python 列表相同,在 NumPy 中也可以使用索引、切片和迭代,好处是可以高效地进行数组处理操作。数组索引方式和普通列表不同的一点是可以通过逗号将多个整数作为索引传入以选取单个元素。
4. 数组形状操作
这意味着改变数组的形状,如更改行列数或重塑数组。可以使用reshape()
函数改变其尺寸。
5. 矩阵操作
NumPy库针对于形如线性代数矩阵的统一格式进行了广泛实现,它提供大量处理矩阵以及其他数学结构的函数和方法,常用于机器学习、图像与信号处理等领域。
6. 数组运算
NumPy内置许多基本数学函数,可作为数组的方法调用,并且可以通过逐元素应用的方式进行-array加、减、乘、除、取余/模运算等基础数学运算,从而更轻松地对数组中的数据进行数学计算。包括求和、平均值、标准差、最大值、最小值等函数。
7. 读写文件
NumPy还支持读写各种类型文件和文本文件,并从中加载处理数据。 当你想快速读取数据时,此类功能能够快速将其转换为数组格式。
综上所述,NumPy 提供了一套强大的数据对象,允许您使用整个数组来进行数学运算或处理序列数据。
代码案例
好的,下面我给您提供一些NumPy语法的示例代码:
1. 创建数组
注释:
- 导入NumPy库,并将其命名为np。
- 通过
np.array()
函数创建一个一维数组。 - 使用
print()
函数输出这个一维数组。
代码:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr)
运行结果:
[1 2 3 4 5]
解释:
此代码定义了一个一维数组arr
,它包含了数字1到5。print()
函数被用来输出这个数组。由于数组包含整数类型的元素,因此在调用print()
函数时,元素之间使用空格隔开,并在方括号内显示出数组本身。
2. 复制数组
注释:
- 导入NumPy库,并将其命名为np。
- 通过
np.array()
函数创建一个一维数组。 - 使用
.copy()
方法创建原始数组的副本。 - 使用
print()
函数输出副本数组。
代码:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
copy_arr = arr.copy()
print(copy_arr)
运行结果:
[1 2 3 4 5]
解释:
与第一个示例类似,这个代码段也创建了一个包含数字1到5的一维数组。然后,使用.copy()
方法创建一个名为copy_arr的副本数组,并使用print()
函数输出副本数组。由于copy_arr是arr的副本,因此它与原始数组完全相同。
3. 排序数组
注释:
- 导入NumPy库,并将其命名为np。
- 通过
np.array()
函数创建一个一维数组。 - 使用
np.sort()
函数对数组进行排序。 - 使用
print()
函数输出排序后的数组。
代码:
import numpy as np
arr = np.array([3, 2, 0, 1, 4])
sorted_arr = np.sort(arr)
print(sorted_arr)
运行结果:
[0 1 2 3 4]
解释:
这个例子创建了一个包含整数0、1、2、3、4的一维数组。然后,使用函数np.sort()
对数组进行排序。最后,使用print()
函数输出新的排序数组。在本示例中,调用np.sort()返回了一个新的已排序数组,而原数组保持不变。可以看到,新数组已按升序排列。
4. 数组索引、切片和迭代
注释:
- 导入NumPy库,并将其命名为np。
- 通过
np.array()
函数创建一个一维数组。 - 使用索引方式输出第一个元素。
- 使用切片的方式输出第2到4个元素(不包括第5个元素)。
- 使用间隔参数输出偶数位置的元素。
- 使用for循环,遍历数组并输出每个元素。
代码:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[0]) # 输出第一个元素
print(arr[1:3]) # 输出2到4之间的元素(不包括4)
print(arr[::2]) # 输出偶数位置的元素
for i in arr:
print(i) # 循环遍历输出所有元素
运行结果:
1
[2 3]
[1 3 5]
1
2
3
4
5
解释:
这个示例演示了如何使用NumPy数组的索引、切片和迭代。首先,使用索引语法输出数组中的第一个元素。接下来,使用切片语法输出2到4之间的元素。然后,使用间隔参数输出偶数位置的元素。最后,在for循环下利用迭代器遍历整个数组,并输出每个元素。
5. 数组形状操作
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
reshape_arr = arr.reshape(2, 3)
print(reshape_arr)
输出:
[[1 2 3]
[4 5 6]]
调用.reshape()
方法可以改变数组的形状。上述示例将原始数组转换为了一个两行三列的二维数组。
6. 矩阵操作
注释:
- 导入NumPy库,并将其命名为np。
- 使用
np.array()
函数分别创建两个二维数组A和B,用来表示矩阵乘法的操作数。 - 使用
np.dot()
函数计算矩阵乘积,并将结果保存在一个名为C的新数组中。 - 使用.T属性对A进行转置,并将结果保存在一个名为D的新数组中。
- 使用
print()
函数依次输出数组C和D的值。
代码:
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])
C = np.dot(A, B) # 矩阵的乘法
D = A.T # 转置
print(C)
print(D)
运行结果:
[[19 22]
[43 50]]
[[1 3]
[2 4]]
解释:
这个示例演示了如何使用NumPy进行矩阵操作。首先,定义两个矩阵A和B,然后使用np.dot()
函数计算它们的矩阵乘积,并将结果存储在一个名为C的数组中。接下来,使用.T
属性对原始矩阵A进行转置,并将结果存储在一个名为D的数组中。最后,使用print()
函数打印输出数组C和D的值。请注意,矩阵C中每个元素都是通过将矩阵A和B的对应元素相乘并在加以加之后计算而得出的,而数组D是原始矩阵A的转置。
7. 数组运算
注释:
- 导入NumPy库,并将其命名为np。
- 通过
np.array()
函数创建一个一维数组。 - 使用
.reshape()
方法将数组转换成一个二维数组,并将其保存到名为reshape_arr的新数组中。 - 使用
print()
函数输出新的数组。
代码:
import numpy as np
arr = np.array([1, 2, 3, 4, 5, 6])
reshape_arr = arr.reshape(2, 3)
print(reshape_arr)
运行结果:
[[1 2 3]
[4 5 6]]
解释:
这个示例演示了如何使用.reshape()
方法将原始的一维数组重塑为一个二维数组。在本示例中,将使用reshape()
方法将原数组初始化为一个两行、三列的数组。因此,函数返回一个Reshaped数组,其中第一行包含数字[1, 2, 3],而第二行包含数字[4, 5, 6]。最后,使用print()
语句在控制台上打印Reshaped数组的值。
8. 读写文件
注释:
- 导入NumPy库,并将其命名为np。
- 通过
np.array()
函数创建一个二维数组。 - 使用
np.save()
函数将数组存储到文件中,并指定保存文件的名称。 - 使用
np.load()
函数从文件中加载数组,并将其存储在名为new_arr的新数组变量中。 - 使用
print()
函数输出新的二维数组。
代码:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
np.save("array_file", arr) # 将数组保存到文件中
new_arr = np.load("array_file.npy") # 从文件中加载数组
print(new_arr)
运行结果:
[[1 2]
[3 4]]
解释:
这个示例演示了如何将Numpy数组存储到磁盘上,然后再次从文件中加载保存的数组,并将其打印为输出。首先定义了包含数字1到4的二维数组。然后,使用np.save()
函数将数组存储到名为“array_file.npy”的文件中。接下来,使用np.load()
函数从该文件读取二进制数据,并将其存储在新数组new_arr中。最后,使用print()
语句输出该新数组的内容,以证明已成功从文件中读取数据并将其重新加载到内存中。