目录
- 1. Numpy 是什么?
- 2. 安装NumPy
- 3. 创建数组
- 4. 数组的基本操作
- 5. 线性代数和统计函数
- 6. 排序和搜索
- 6.1 排序(Sorting)
- 6.2 搜索(Searching)
- 7. 输入输出
- 7.1 二进制文件输入输出
- 7.2 压缩的二进制文件输入输出
- 7.3 文本文件输入输出
1. Numpy 是什么?
NumPy(Numerical Python)是Python中用于处理大型多维数组和矩阵的数学运算库,并提供了大量用于处理这些数组的高级数学函数。它是许多其他Python库(如SciPy、Pandas和Matplotlib)的基础。
以下是一些NumPy的特性和基本用法:
2. 安装NumPy
使用pip安装NumPy:
pip install numpy
3. 创建数组
- 使用
numpy.array()
函数:
import numpy as nparr1 = np.array([1, 2, 3, 4, 5]) # 一维数组
arr2 = np.array([[1, 2], [3, 4], [5, 6]]) # 二维数组(或矩阵)
- 使用特定的函数创建数组,如
numpy.zeros()
,numpy.ones()
,numpy.full()
,numpy.arange()
,numpy.linspace()
,numpy.random.rand()
,numpy.random.randint()
等:
zeros_arr = np.zeros((3, 3)) # 创建一个3x3的全零数组
ones_arr = np.ones((2, 3)) # 创建一个2x3的全1数组
rand_arr = np.random.rand(4, 4) # 创建一个4x4的随机数组,值在[0, 1)之间
4. 数组的基本操作
- 索引和切片:
print(arr2[0, 1]) # 输出:2
print(arr2[:2, :]) # 输出前两行
- 形状(shape)和大小(size):
print(arr2.shape) # 输出:(3, 2)
print(arr2.size) # 输出:6
- 数据类型(dtype):
print(arr1.dtype) # 输出:int64 或其他整数类型
- 重塑(reshape):
reshaped_arr = arr1.reshape((1, 5)) # 将一维数组转换为1x5的二维数组
- 数组运算:NumPy支持数组间的元素级运算(如加法、减法、乘法、除法等)。
result = arr1 + arr1 # 对arr1中的每个元素进行加法运算
5. 线性代数和统计函数
NumPy提供了许多用于线性代数(如矩阵乘法、求逆、行列式等)和统计(如均值、中位数、标准差等)的函数。
# 矩阵乘法
result = np.dot(arr2, arr2.T) # T表示转置# 计算均值
mean_val = np.mean(arr1)
6. 排序和搜索
NumPy在排序和搜索数组元素方面提供了强大的功能。以下是关于NumPy排序和搜索的详细说明:
6.1 排序(Sorting)
-
numpy.sort()
- 功能:返回输入数组的排序副本。
- 参数:
a
:要排序的数组。axis
:沿着哪个轴进行排序(默认为-1,表示最后一个轴)。kind
:排序算法的选择(默认为’quicksort’)。order
:如果数组包含字段,则是要排序的字段。
- 示例:
import numpy as np arr = np.array([[3, 2, 4], [5, 0, 1]]) print(np.sort(arr, axis=0)) # [[3 0 1] [5 2 4]](按列排序) print(np.sort(arr, axis=1)) # [[2 3 4] [0 1 5]](按行排序)
-
numpy.argsort()
- 功能:返回输入数组中元素排序后的索引数组。
- 参数与
numpy.sort()
类似。 - 示例:
arr = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]) print(np.argsort(arr)) # [1 7 0 3 9 2 8 4 5 6]
6.2 搜索(Searching)
-
numpy.where()
- 功能:根据条件返回符合条件的元素的索引。
- 示例:
arr = np.array([1, 2, 3, 4, 5, 6]) print(np.where(arr > 3)) # (array([3, 4, 5]),)
-
numpy.argmax() 和 numpy.argmin()
- 功能:分别返回数组中最大值和最小值的索引。
- 示例:
arr = np.array([[1, 2, 3], [4, 5, 6]]) print(np.argmax(arr)) # 5(最大值的索引) print(np.argmin(arr)) # 0(最小值的索引) print(np.argmin(arr, axis=0)) # [0 0 0](每一列最小值的索引)
-
numpy.searchsorted()
- 功能:在已排序数组中查找元素的插入点,以维持排序。
- 示例:
arr = np.array([1, 3, 5, 7, 9]) print(np.searchsorted(arr, 4)) # 2(4应插入的位置)
-
numpy.nonzero()
- 功能:返回非零元素的索引。
- 示例:
arr = np.array([[1, 0, 0], [0, 2, 0], [3, 0, 4]]) print(np.nonzero(arr)) # (array([0, 1, 2, 2]), array([0, 1, 0, 2]))
-
numpy.extract()
- 功能:根据条件从数组中提取元素。注意,此函数可能在某些NumPy版本中不被直接支持,但可以通过布尔索引实现类似功能。
以上就是NumPy在排序和搜索方面的主要功能。这些函数为处理大型数组提供了高效的方法,特别是在数据分析和科学计算中非常有用。
7. 输入输出
NumPy可以轻松地读取和写入文件中的数据,特别是那些以文本或二进制格式存储的大型数组。
NumPy为数据分析和科学计算提供了强大的基础,是Python中数据科学和机器学习领域的重要工具。
NumPy提供了多种用于数据输入输出的函数,这些函数使得用户能够方便地将数据从磁盘加载到NumPy数组中,或者将NumPy数组中的数据保存到磁盘上。以下是一些常用的NumPy输入输出函数及其简要说明:
7.1 二进制文件输入输出
numpy.save()
:将数组保存到二进制文件中,扩展名为.npy
。这是保存NumPy数组数据到磁盘的常用方法。import numpy as np arr = np.array([[1, 2, 3], [4, 5, 6]]) np.save('array.npy', arr)
numpy.load()
:从.npy
文件中加载数组。loaded_arr = np.load('array.npy')
7.2 压缩的二进制文件输入输出
numpy.savez()
:将多个数组保存到未压缩的.npz
文件中。a = np.array([[1, 2], [3, 4]]) b = np.array([1, 2, 3, 4]) np.savez('array_archive.npz', a=a, b=b)
numpy.savez_compressed()
:将多个数组保存到压缩的.npz
文件中。
7.3 文本文件输入输出
numpy.loadtxt()
:从文本文件中加载数据,适用于无缺失值的情况。data = np.loadtxt('file.txt', delimiter=',') # 如果数据由逗号分隔
numpy.savetxt()
:将数据保存为文本文件。可以指定分隔符、头信息、格式等。np.savetxt('output.txt', arr, delimiter=',')
numpy.genfromtxt()
:从文本文件中加载数据,可以处理缺失值。data = np.genfromtxt('file_with_missing.csv', delimiter=',', filling_values=-999)
注意事项:
当使用numpy.savetxt()
和文件对象时,注意确保以文本模式(‘w’)而不是二进制模式(‘wb’)打开文件,因为savetxt()
期望接收一个字符串作为文件名,而不是文件对象。
对于大文件,使用二进制文件(.npy
或.npz
)进行读写通常比文本文件更高效。