NumPy(Numerical Python)是Python中的一个开源数值计算库,它提供了用于操作多维数组和执行数学运算的功能。NumPy是数据科学和科学计算的重要工具,广泛用于处理、分析和处理数据,尤其在机器学习和深度学习领域。
以下是一些NumPy的主要特点和功能:
1. **多维数组(Arrays):** NumPy引入了多维数组对象(称为ndarray),它是一个高效的多维数据结构,用于存储和操作数据。这些数组可以是一维、二维、三维甚至更高维度。
import numpy as np
# 一维数组
arr1 = np.array([1, 2, 3])
# 二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]])
# 零数组
zeros_arr = np.zeros((2, 3))
# 一数组
ones_arr = np.ones((2, 3))
# 等差数列
range_arr = np.arange(0, 10, 2)
# 随机数组
random_arr = np.random.rand(2, 3)
2. **数学运算:** NumPy提供了各种数学函数和运算符,用于执行各种数学操作,如加法、减法、乘法、除法、矩阵运算、线性代数运算等。
import numpy as np
# 矩阵乘法
matrix_a = np.array([[1, 2], [3, 4]])
matrix_b = np.array([[5, 6], [7, 8]])
matrix_multiply = np.dot(matrix_a, matrix_b)
# 行列式计算
det_result = np.linalg.det(matrix_a)
# 特征值和特征向量计算
eigenvalues, eigenvectors = np.linalg.eig(matrix_a)
3. **广播(Broadcasting):** NumPy具有强大的广播功能,允许在不同形状的数组之间执行运算,使得数组之间的运算更加灵活。
import numpy as np
# 数组加法
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
result_addition = arr1 + arr2
# 数组乘法
result_multiplication = arr1 * arr2
# 广播
arr_broadcast = np.array([[1, 2, 3], [4, 5, 6]])
scalar_value = 2
result_broadcast = arr_broadcast * scalar_value
4. **随机数生成:** NumPy包含众多的随机数生成函数,用于生成随机数和随机数组,用于模拟随机性和进行蒙特卡洛模拟。
import numpy as np
# 生成服从正态分布的随机数
random_normal = np.random.randn(2, 3)
# 生成随机整数
random_integer = np.random.randint(1, 10, size=(2, 3))
5. **索引和切片:** NumPy允许你使用索引和切片操作数组中的数据,使得数据的访问和处理非常方便。
import numpy as np
# 索引
arr = np.array([1, 2, 3, 4, 5])
index_value = arr[2]
# 切片
sliced_arr = arr[1:4]
6. **快速和高效:** NumPy底层使用C语言编写,因此具有高性能,特别适用于大规模数据处理。
7. **与其他库整合:** NumPy与许多其他Python库和工具(如SciPy、Pandas、Matplotlib)紧密集成,使得数据科学任务更加便捷。
NumPy是数据科学、机器学习和科学计算的基础之一,它提供了强大的工具和数据结构,用于进行数据处理和分析。许多其他Python库都依赖于NumPy来实现其核心功能。如果你从事数据分析或科学计算的工作,NumPy是一个不可或缺的工具,值得深入学习和掌握。
最常用:能够完成数据的各种生成和常用的数学函数的使用,如快速傅里叶变换(FFT)、高斯消元(Gauss)、最小二乘法(LSQ)、奇异值分解(SVD);提供 ndarray 数据结构
Pandas是一个开源的数据分析库,构建在NumPy之上,专为数据操作和分析而设计。它提供了易于使用的数据结构和数据分析工具,使数据的清理、转换、探索和分析变得更加便捷。Pandas常用于数据科学、机器学习、数据处理和数据可视化等领域。
以下是一些Pandas的主要特点和功能:
1. **数据结构:** Pandas引入了两种主要的数据结构,DataFrame和Series。
- DataFrame:类似于数据库表格,是一个二维的、标签化的数据结构,每列可以包含不同类型的数据,用于表示和操作结构化数据。
- Series:类似于一维数组,是一列数据的容器,具有标签(索引)和数据值。
2. **数据读取和写入:** Pandas支持从多种数据源(如CSV、Excel、SQL数据库、JSON、HTML、等等)中读取数据,以及将数据写入这些格式。
3. **数据清洗和处理:** Pandas提供了丰富的工具和函数,用于数据的清理、去重、缺失值处理、重塑、拼接和转换等操作。
4. **数据索引和选择:** 可以使用标签和位置进行数据选择和切片操作,使得数据的检索和操作更加方便。
5. **数据聚合和分组:** Pandas支持数据分组、聚合和汇总操作,用于生成统计信息、汇总数据和创建数据透视表。
6. **时间序列处理:** Pandas提供了强大的时间序列数据处理功能,包括日期和时间索引、时间窗口、滚动统计等。
7. **数据可视化:** Pandas可以与其他数据可视化库(如Matplotlib和Seaborn)结合使用,以方便地创建图表和可视化数据。
8. **高性能:** Pandas在底层使用了NumPy,因此具有高性能,特别适用于大规模数据分析任务。
Pandas是数据科学中的核心工具之一,它能够处理各种数据类型,从结构化数据到时间序列数据,从处理小型数据集到大型数据集都非常适用。如果你需要进行数据分析、数据清理、数据探索或数据操作,学习Pandas将会对你的工作非常有帮助。
最常用:提供了DataFrame数据结构,可以读取二维表格数据DataFrame/Series(Excel、csv、tsv)
要想用pandas包,前提是先有numpy包
SciPy是一个开源的Python科学计算库,它建立在NumPy的基础之上,提供了更多的高级科学计算功能和工具。SciPy的目标是提供一种广泛应用于科学、工程和技术领域的工具,涵盖了数值积分、优化、信号处理、线性代数、统计学、图像处理等多个领域。
以下是一些SciPy的主要特点和功能:
1. **数值积分和微分方程求解:** SciPy包含了各种数值积分和微分方程求解的工具,用于解决各种数学问题,包括常微分方程、偏微分方程、数值积分、插值等。
2. **优化:** SciPy提供了多种优化算法,包括最小化、最大化、约束优化等,用于解决优化问题,如函数拟合、参数估计、机器学习模型训练等。
3. **信号处理:** SciPy包括信号处理模块,用于滤波、谱分析、波形处理、图像处理和音频处理等。
4. **线性代数:** SciPy提供了线性代数工具,用于解决线性方程组、特征值和特征向量计算、奇异值分解等问题。
5. **统计学:** SciPy包含统计分布、统计检验和描述性统计等工具,用于统计分析和假设检验。
6. **图像处理:** SciPy具有图像处理模块,用于图像滤波、特征提取、形态学处理等。
7. **稀疏矩阵:** SciPy支持稀疏矩阵表示和操作,适用于大规模数据和大规模线性代数问题。
8. **插值:** SciPy提供了各种插值方法,用于估计缺失数据点的值,包括一维和多维插值。
9. **统计建模:** SciPy支持统计建模和回归分析,包括线性回归、非线性回归、广义线性模型等。
SciPy与NumPy一起构成了Python科学计算的重要工具,使得科学家、工程师和研究人员能够进行各种科学计算任务,从数值模拟到数据分析,都可以在Python中使用SciPy库来完成。如果你需要解决数学、工程或科学领域的问题,SciPy是一个强大的工具,值得学习和使用。
最常用:一些数Numpy中不方便做的科学运算,如Gamma函数,组合数公式(Comb)
Matplotlib是一个开源的Python绘图库,用于创建高质量的静态、动态、交互式和可视化图形。Matplotlib使用户能够轻松地绘制各种图形,包括折线图、散点图、柱状图、直方图、饼图、热力图等,以及自定义图形的外观和风格。
以下是Matplotlib的一些主要特点和功能:
1. **灵活性:** Matplotlib提供了广泛的功能和选项,允许用户完全控制图形的各个方面,包括图表类型、颜色、标签、轴标尺、线条样式等。
2. **多种图形类型:** Matplotlib支持多种不同类型的图形,使用户能够根据需求选择适当的图表类型。
3. **高质量输出:** Matplotlib图形可以以各种格式输出,包括PNG、JPG、SVG、PDF等,从而用于出版、报告和文档。
4. **交互式绘图:** Matplotlib可以与Jupyter Notebook等环境结合使用,支持交互式数据可视化。
5. **图形定制:** 用户可以通过调整图形属性、添加文本、标签、注释等来自定义图形。
6. **多种绘图风格:** Matplotlib有多种不同的绘图风格可供选择,用户可以根据自己的喜好和需求来选择。
7. **支持3D绘图:** Matplotlib还支持绘制三维图形,适用于空间数据可视化和科学建模。
8. **大型社区和文档:** Matplotlib有庞大的用户社区和广泛的文档资源,使得用户可以轻松找到解决方案和示例。
Matplotlib通常与NumPy、SciPy和Pandas等Python库一起使用,以可视化数据和分析结果。它是数据科学、机器学习、科学研究和工程领域中最受欢迎的绘图工具之一。如果你需要在Python中创建各种类型的图形和可视化,Matplotlib是一个非常强大的工具,值得学习和使用。
最常用:绘图,尤其是二维图
例子:
(1)绘制折线图
import matplotlib.pyplot as plt
#这句话还可以用:from matplotlib import pyplot as plt
# 创建数据
x = range(2,26,2)
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 27, 22, 18, 15]
# 绘制折线图
plt.plot(x, y)
# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图形
plt.show()
(2)绘制散点图
import matplotlib.pyplot as plt
# 创建数据
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# 绘制散点图
plt.scatter(x, y, color='red', marker='o')
# 添加标题和标签
plt.title('Scatter Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图形
plt.show()
(3)绘制柱状图
import matplotlib.pyplot as plt
# 创建数据
categories = ['Category A', 'Category B', 'Category C']
values = [4, 7, 2]
# 绘制柱状图
plt.bar(categories, values, color='blue')
# 添加标题和标签
plt.title('Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')
# 显示图形
plt.show()
(4)绘制饼图
import matplotlib.pyplot as plt
# 创建数据
labels = ['Label A', 'Label B', 'Label C']
sizes = [30, 40, 30]
# 绘制饼图
plt.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
# 添加标题
plt.title('Pie Chart')
# 显示图形
plt.show()
Scikit-learn(通常称为sklearn)是一个开源的Python机器学习库,它提供了各种用于机器学习和数据挖掘的工具和算法。Scikit-learn建立在NumPy、SciPy和Matplotlib等库的基础上,使得机器学习任务变得更加容易,并提供了简单而一致的接口,使用户能够快速构建和评估各种机器学习模型。
以下是Scikit-learn的一些主要特点和功能:
1. **机器学习算法:** Scikit-learn包括了许多机器学习算法,如分类、回归、聚类、降维、特征选择、异常检测等。这些算法包括决策树、支持向量机、随机森林、k均值聚类、主成分分析等。
2. **一致的API:** Scikit-learn提供了一致的API,使不同算法的使用方式非常相似,这有助于快速学习和应用多种算法。
3. **数据预处理:** Scikit-learn包括数据预处理工具,如数据标准化、缺失值处理、特征缩放、特征工程等,使数据准备更加简单。
4. **模型评估:** Scikit-learn提供了用于模型评估的工具,如交叉验证、网格搜索、模型选择和性能度量。这有助于选择和调优最佳模型。
5. **支持向量机:** Scikit-learn实现了支持向量机(SVM)算法,用于分类和回归任务,包括线性SVM和核SVM。
6. **集成学习:** Scikit-learn支持集成学习方法,如随机森林和梯度提升机,以提高模型的性能。
7. **自然语言处理(NLP):** Scikit-learn还包括了用于文本数据处理和自然语言处理的工具,如TF-IDF向量化器。
8. **图像特征提取:** Scikit-learn还包括了图像特征提取的工具,用于处理图像数据。
Scikit-learn广泛用于各种机器学习任务,从分类和回归到聚类和异常检测。它是机器学习领域中最受欢迎的Python库之一,对于初学者和专业人士来说都是一个非常有用的工具,可以帮助他们在各种应用中构建和部署机器学习模型。如果你对机器学习感兴趣,Scikit-learn是一个很好的起点。
常用:做机器学习(ML)
TensorFlow是一个开源的机器学习框架,由Google Brain团队开发和维护。它是一个多用途的深度学习框架,用于构建、训练和部署各种机器学习模型,包括神经网络。
以下是TensorFlow的一些主要特点和功能:
1. **灵活的架构:** TensorFlow具有灵活的架构,支持静态计算图和动态计算图。用户可以根据需要选择不同的计算图模式,使其适用于多种任务。
2. **多平台支持:** TensorFlow可以在多种平台上运行,包括CPU、GPU和TPU(Tensor Processing Unit)。这使得它适用于从移动设备到大型服务器的各种硬件。
3. **高性能计算:** TensorFlow使用硬件加速,以加快模型训练和推理速度。它还支持分布式计算,可以在多台机器上并行训练大型模型。
4. **自动求导:** TensorFlow提供了自动微分工具,用于计算梯度,这对于深度学习中的反向传播算法非常重要。
5. **丰富的生态系统:** TensorFlow拥有丰富的生态系统,包括TensorFlow Hub用于模型共享、TensorBoard用于可视化、TensorFlow Serving用于模型部署等。
6. **多种API:** TensorFlow提供了多种API,包括原生Python API、Keras API、Estimator API等。Keras现在已经整合到TensorFlow中,成为其高级API。
7. **部署支持:** TensorFlow支持模型的部署,包括将模型导出为TensorFlow Lite用于移动设备、TensorFlow.js用于Web应用程序和TensorFlow Serving用于生产环境。
8. **社区支持:** TensorFlow拥有庞大的用户社区,有大量的文档、教程和开源项目可供使用。
TensorFlow被广泛用于各种机器学习任务,包括计算机视觉、自然语言处理、强化学习、推荐系统等。它是一个强大的机器学习框架,得到了众多研究机构和工业界的支持和使用。如果你对深度学习和机器学习有兴趣,TensorFlow是一个重要的工具,值得学习和掌握。
PyTorch是一个开源的深度学习框架,由Facebook's AI Research实验室(FAIR)开发和维护。PyTorch提供了一个灵活而强大的平台,用于构建、训练和部署深度神经网络。它在研究界和工业界都广泛应用,因为其直观的API和动态计算图的特点。
以下是PyTorch的一些主要特点和功能:
1. **动态计算图:** PyTorch采用动态计算图,允许用户在运行时构建和修改计算图。这使得模型的构建和调试更加直观和灵活。
2. **张量操作:** PyTorch提供了张量数据结构和丰富的张量操作,用于进行数学运算,包括加法、乘法、卷积、池化等。
3. **自动求导:** PyTorch内置了自动求导功能,用于计算梯度。这对于反向传播算法在训练神经网络中非常重要。
4. **深度学习模块:** PyTorch包括了许多深度学习模块,如卷积神经网络(CNN)、循环神经网络(RNN)、长短时记忆网络(LSTM)、转换器(Transformer)等,可以用于构建各种类型的神经网络模型。
5. **模型部署:** PyTorch支持将模型导出为TorchScript格式,以便在不同平台上进行部署,包括移动设备、服务器和Web应用。
6. **丰富的生态系统:** PyTorch生态系统包括各种扩展库和工具,如TorchVision(用于计算机视觉任务)、TorchText(用于自然语言处理任务)、TorchAudio(用于音频处理任务)等。
7. **社区支持:** PyTorch拥有庞大的用户社区,提供丰富的文档、教程和支持,以帮助用户学习和使用框架。
8. **深度学习研究:** PyTorch在研究界非常流行,因为它提供了强大的实验支持,使研究人员能够快速实验新的想法和模型。
PyTorch在深度学习领域具有广泛的应用,尤其在研究、实验、原型开发和创新领域中非常受欢迎。它是一个非常强大和灵活的深度学习框架,适用于各种深度学习任务。如果你对深度学习和神经网络感兴趣,PyTorch是一个重要的工具,值得学习和掌握。
最常用:做深度学习(DL)
安装numpy:在cmd窗口中
C:\Users\Administrator>pip install numpy
Requirement already satisfied: numpy in d:\ai\anaconda3\lib\site-packages (1.21.5)
七、Pillow
Pillow是一个Python图像处理库,用于打开、操作、保存多种图像文件格式。Pillow是Python Imaging Library(PIL)的一个分支,它提供了对图像进行常见操作的简单而强大的接口。
以下是Pillow库的一些主要功能和用途:
1. **图像打开和保存:** Pillow支持多种图像文件格式,包括常见的JPEG、PNG、GIF、BMP等。它允许你打开图像文件、创建新图像并保存到不同的格式中。
from PIL import Image
# 打开图像文件
img = Image.open("example.jpg")
# 保存图像
img.save("output.png")
2. **图像基本操作:** Pillow提供了一系列基本的图像操作,如调整大小、旋转、裁剪等。
# 调整图像大小
img_resized = img.resize((width, height))
# 旋转图像
img_rotated = img.rotate(90)
# 裁剪图像
img_cropped = img.crop((left, top, right, bottom))
3. **图像滤镜和增强:** Pillow支持图像滤镜和增强效果,如模糊、锐化、对比度调整等。
from PIL import ImageFilter
# 应用滤镜
img_blurred = img.filter(ImageFilter.BLUR)
# 增强对比度
img_enhanced = img.enhance(1.5) # 1.5表示增强的倍数
4. **图像合成:** Pillow允许将多个图像合成为一个,或在图像上叠加文本和其他图像元素。
# 合并图像
new_img = Image.alpha_composite(img1, img2)
# 在图像上叠加文本
draw = ImageDraw.Draw(img)
draw.text((x, y), "Hello, Pillow!", font=font, fill=color)
5. **颜色转换:** Pillow支持颜色空间的转换和调整。
# 转换为灰度图像
img_gray = img.convert("L")
# 调整亮度和对比度
img_adjusted = ImageEnhance.Brightness(img).enhance(1.5)
Pillow是一个简单易用的图像处理库,适用于各种图像处理任务,从简单的图像操作到复杂的图像处理和增强。如果你需要在Python中进行图像处理,Pillow是一个常用的选择。