珠海的门户网站有哪些,浙江省建设执业注册中心网站,插件功能wordpress,sem和seo都包括什么NumPyNumPy#xff08;Numerical Python#xff09;是 Python 科学计算的核心库#xff0c;它提供了高性能的 多维数组对象#xff08;ndarray#xff09;和数学函数#xff0c;能高效处理数值计算、矩阵运算、线性代数等任务#xff0c;是 Pandas、Matplotlib、Scikit-…NumPyNumPyNumerical Python是 Python 科学计算的核心库它提供了高性能的 多维数组对象ndarray和数学函数能高效处理数值计算、矩阵运算、线性代数等任务是 Pandas、Matplotlib、Scikit-learn 等库的基础。一、安装与导入安装使用 pip 命令安装pip install numpy惯例简写为npimport numpy as np二、核心对象ndarrayndarray 是 NumPy 的核心数据结构是同类型元素的多维数组相比 Python 原生列表它的存储更紧凑、运算速度更快底层由 C 实现。1. 创建 ndarray常见创建方式有以下几种# 1. 从列表/元组创建 arr1 np.array([1, 2, 3, 4]) # 一维数组 arr2 np.array([[1, 2], [3, 4]]) # 二维数组矩阵 arr3 np.array(((1, 2), (3, 4))) # 从元组创建 # 2. 创建特殊数组 arr_zero np.zeros((2, 3)) # 2行3列全0数组 arr_one np.ones((3, 2)) # 3行2列全1数组 arr_eye np.eye(3) # 3阶单位矩阵对角线为1其余为0 arr_arange np.arange(0, 10, 2) # 类似range生成[0,2,4,6,8] arr_linspace np.linspace(0, 1, 5) # 0到1之间生成5个等距数[0,0.25,0.5,0.75,1] arr_rand np.random.rand(2, 2) # 2行2列0-1之间的随机数 arr_randint np.random.randint(0, 10, (3, 3)) # 3行3列0-10的随机整数2. ndarray 的属性通过属性可快速查看数组的核心信息arr np.array([[1, 2, 3], [4, 5, 6]]) print(arr.shape) # 数组形状(2, 3)行、列 print(arr.ndim) # 数组维度2 print(arr.size) # 元素总数6 print(arr.dtype) # 元素类型int64可通过dtype参数指定如np.array([1,2], dtypenp.float32) print(arr.itemsize) # 每个元素的字节数8int64占8字节3. 数组重塑与转置可灵活改变数组的形状不改变元素本身arr np.arange(12) # 一维数组[0,1,2,...,11] arr_reshape arr.reshape(3, 4) # 重塑为3行4列 arr_transpose arr_reshape.T # 转置行变列列变行 # 注意reshape(-1)可将任意维度数组展平为一维 arr_flat arr_reshape.reshape(-1)三、ndarray 的运算NumPy 支持向量化运算无需循环即可对整个数组进行操作效率远高于 Python 原生列表。1. 算术运算数组与标量、数组与数组之间可直接运算要求形状兼容arr1 np.array([[1, 2], [3, 4]]) arr2 np.array([[5, 6], [7, 8]]) # 与标量运算 print(arr1 2) # 每个元素加2 print(arr1 * 3) # 每个元素乘3 print(arr1 ** 2) # 每个元素平方 # 数组间运算对应元素运算 print(arr1 arr2) # 对应元素相加 print(arr1 * arr2) # 对应元素相乘不是矩阵乘法 print(arr1 / arr2) # 对应元素相除2. 矩阵乘法使用或np.dot()实现矩阵乘法需满足前一个矩阵的列数 后一个矩阵的行数arr1 np.array([[1, 2], [3, 4]]) arr2 np.array([[5, 6], [7, 8]]) print(arr1 arr2) # 矩阵乘法 # 等价于np.dot(arr1, arr2)3. 聚合运算对数组进行求和、求均值、找最值等操作arr np.array([[1, 2, 3], [4, 5, 6]]) print(np.sum(arr)) # 所有元素求和21 print(np.sum(arr, axis0)) # 按列求和[5,7,9] print(np.sum(arr, axis1)) # 按行求和[6,15] print(np.mean(arr)) # 均值3.5 print(np.max(arr)) # 最大值6 print(np.min(arr, axis1)) # 按行找最小值[1,4] print(np.argmax(arr)) # 最大值的索引5四、数组的索引与切片ndarray 支持类似 Python 列表的索引和切片且支持多维索引。1. 一维数组索引 / 切片与 Python 列表完全一致arr np.arange(10) print(arr[5]) # 取索引5的元素5 print(arr[2:7]) # 切片[2,3,4,5,6] print(arr[::2]) # 步长2[0,2,4,6,8] print(arr[::-1]) # 逆序[9,8,...,0]2. 多维数组索引 / 切片用逗号分隔不同维度的索引 / 切片arr np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(arr[1, 2]) # 第二行第三列6 print(arr[0]) # 第一行[1,2,3] print(arr[:, 1]) # 第二列[2,5,8] print(arr[1:3, 0:2])# 第二、三行第一、二列[[4,5],[7,8]]3. 布尔索引通过布尔条件筛选元素是 NumPy 的常用技巧arr np.array([1, 2, 3, 4, 5, 6]) mask arr 3 # 生成布尔数组[False,False,False,True,True,True] print(arr[mask]) # 筛选出大于3的元素[4,5,6] # 多维数组布尔索引 arr2 np.array([[1, 2], [3, 4], [5, 6]]) print(arr2[arr2[:, 0] 2]) # 筛选第一列大于2的行[[3,4],[5,6]]五、广播机制当两个数组形状不同时NumPy 会通过广播自动扩展数组形状使其满足运算条件需遵循广播规则。广播规则维度少的数组会在前面补 1直到维度数相同若某一维度的长度为 1会自动复制扩展为另一数组的对应维度长度。示例arr1 np.array([[1, 2, 3], [4, 5, 6]]) # 形状(2,3) arr2 np.array([10, 20, 30]) # 形状(3,) → 广播为(2,3) print(arr1 arr2) # 结果[[11,22,33],[14,25,36]] arr3 np.array([[10], [20]]) # 形状(2,1) → 广播为(2,3) print(arr1 arr3) # 结果[[11,12,13],[24,25,26]]六、常用功能线性代数np.linalg模块提供矩阵求逆、求行列式、解线性方程组等功能arr np.array([[1, 2], [3, 4]]) print(np.linalg.inv(arr)) # 矩阵求逆 print(np.linalg.det(arr)) # 求行列式数据拼接与分割arr1 np.array([[1,2],[3,4]]) arr2 np.array([[5,6],[7,8]]) print(np.concatenate([arr1, arr2], axis0)) # 按行拼接 print(np.concatenate([arr1, arr2], axis1)) # 按列拼接缺失值处理NumPy 用np.nan表示缺失值需注意np.nan是浮点数类型arr np.array([1, np.nan, 3, 4]) print(np.isnan(arr)) # 检测缺失值[False,True,False,False] print(np.nanmean(arr))# 忽略缺失值求均值2.666...NumPy 的核心优势是向量化运算和多维数组它将 Python 的数值计算效率提升到了接近 C 的水平是数据分析、机器学习、科学计算的必备工具。如果需要针对具体场景比如结合机器学习的数组操作、数据预处理深入讲解可以告诉我。Matplotlib 是 Python 中最常用的数据可视化库它能创建高质量的静态、动态和交互式图表支持线图、柱状图、散点图、直方图、饼图等多种图表类型也是 Pandas、Seaborn 等库的可视化基础。Matplotlib 有两种主要使用方式pyplot 接口轻量级、面向过程的接口类似 MATLAB 的语法适合快速绘图。面向对象OO接口更灵活、更强大适合定制化复杂图表。matplotlib一、安装与导入安装使用 pip 命令安装pip install matplotlib导入惯例将pyplot简写为plt若需显示图片如 Jupyter Notebook需加%matplotlib inline脚本中无需。import matplotlib.pyplot as plt import numpy as np # 结合NumPy生成数据二、核心概念Matplotlib 的图表由 ** 画布Figure和子图Axes** 构成Figure整个绘图窗口是所有子图的容器。Axes单个图表包含坐标轴、刻度、标签、绘图元素等一个 Figure 可包含多个 Axes。Axis坐标轴x 轴、y 轴负责管理刻度和标签。Artist所有可见元素如线条、文字、图例都属于 Artist 对象。三、快速绘图pyplot 接口pyplot 接口通过简单的函数调用快速绘图适合入门和简单图表。1. 基本线图# 生成数据 x np.linspace(0, 2 * np.pi, 100) y np.sin(x) y2 np.cos(x) # 创建图表 plt.plot(x, y, labelsin(x), colorred, linestyle-, linewidth2) # 绘制正弦曲线 plt.plot(x, y2, labelcos(x), colorblue, linestyle--, linewidth2) # 绘制余弦曲线 # 添加标题和标签 plt.title(Sin Cos Curve, fontsize14) plt.xlabel(X Axis, fontsize12) plt.ylabel(Y Axis, fontsize12) # 添加图例和网格 plt.legend(locupper right) # 图例位置 plt.grid(True, alpha0.3) # 网格alpha为透明度 # 显示图表 plt.show()2. 常见图表类型1柱状图Bar用于比较不同类别的数值大小# 数据 categories [A, B, C, D] values [20, 35, 30, 25] # 绘图 plt.bar(categories, values, colorskyblue, width0.6) plt.title(Bar Chart Example) plt.xlabel(Categories) plt.ylabel(Values) plt.show()2散点图Scatter用于展示两个变量的相关性# 生成随机数据 x np.random.rand(50) y np.random.rand(50) colors np.random.rand(50) # 随机颜色 sizes 100 * np.random.rand(50) # 随机点大小 # 绘图 plt.scatter(x, y, ccolors, ssizes, alpha0.7, cmapviridis) plt.colorbar(labelColor Intensity) # 颜色条 plt.title(Scatter Plot Example) plt.xlabel(X) plt.ylabel(Y) plt.show()3直方图Histogram用于展示数据的分布情况# 生成正态分布数据 data np.random.randn(1000) # 标准正态分布 # 绘图 plt.hist(data, bins30, colororange, edgecolorblack, alpha0.7) plt.title(Histogram Example) plt.xlabel(Value) plt.ylabel(Frequency) plt.show()4饼图Pie用于展示各部分占总体的比例# 数据 labels [Apple, Banana, Orange, Grape] sizes [30, 25, 20, 25] explode (0.1, 0, 0, 0) # 突出第一个部分Apple # 绘图 plt.pie(sizes, explodeexplode, labelslabels, autopct%1.1f%%, shadowTrue, startangle90) plt.axis(equal) # 保证饼图为正圆形 plt.title(Pie Chart Example) plt.show()四、面向对象OO接口推荐面向对象接口直接操作Figure和Axes对象更适合定制化复杂图表如多子图、精细化布局。1. 单张子图# 创建Figure和Axes对象 fig, ax plt.subplots(figsize(8, 5)) # figsize指定画布大小宽, 高 # 生成数据 x np.linspace(0, 10, 100) y np.exp(-x/10) * np.sin(x) # 在Axes上绘图 ax.plot(x, y, colorgreen, labelexp(-x/10)*sin(x)) # 定制化设置通过ax对象 ax.set_title(OO Interface Example, fontsize14) ax.set_xlabel(X Axis, fontsize12) ax.set_ylabel(Y Axis, fontsize12) ax.legend() ax.grid(True, alpha0.3) # 显示图表 plt.show()2. 多张子图通过plt.subplots(nrows, ncols)创建多行多列的子图布局# 创建2行2列的子图 fig, axes plt.subplots(nrows2, ncols2, figsize(10, 8)) fig.suptitle(Multiple Subplots Example, fontsize16) # 总标题 # 子图1线图 x np.linspace(0, 2*np.pi, 100) axes[0, 0].plot(x, np.sin(x), colorred) axes[0, 0].set_title(Sin(x)) # 子图2柱状图 axes[0, 1].bar([A, B, C], [10, 20, 15], colorblue) axes[0, 1].set_title(Bar Chart) # 子图3散点图 axes[1, 0].scatter(np.random.rand(30), np.random.rand(30), colorgreen) axes[1, 0].set_title(Scatter Plot) # 子图4直方图 axes[1, 1].hist(np.random.randn(500), bins20, colororange) axes[1, 1].set_title(Histogram) # 调整子图间距 plt.tight_layout() # 自动调整布局避免重叠 plt.show()五、图表定制化Matplotlib 支持高度定制化图表的样式、元素和布局常见定制化操作如下1. 样式设置可使用内置样式或自定义样式# 使用内置样式如seaborn、ggplot plt.style.use(seaborn-v0_8) # 注意新版本Matplotlib中seaborn样式命名为seaborn-v0_8 # 自定义线条样式颜色color、线型linestyle、线宽linewidth、标记marker plt.plot(x, y, color#FF5733, linestyle-., linewidth3, markero, markersize5)2. 坐标轴范围与刻度# 设置x轴和y轴范围 plt.xlim(0, 10) plt.ylim(-1, 1) # 自定义刻度 plt.xticks([0, np.pi/2, np.pi, 3*np.pi/2, 2*np.pi], [0, π/2, π, 3π/2, 2π])3. 文本与注释在图表中添加文本或注释# 添加文本 plt.text(2, 0.5, Text Example, fontsize12, colorred) # 添加注释带箭头 plt.annotate(Peak, xy(np.pi/2, 1), xytext(np.pi/21, 0.8), arrowpropsdict(arrowstyle-, colorblue))4. 保存图表将绘制好的图表保存为图片支持 PNG、JPG、PDF、SVG 等格式# 保存图表dpi指定分辨率bbox_inchestight去除多余空白 plt.savefig(my_plot.png, dpi300, bbox_inchestight)六、常见扩展Seaborn基于 Matplotlib 的高级可视化库专注于统计图表样式更美观语法更简洁。Plotly交互式可视化库可创建网页端的交互式图表如缩放、悬停提示。3D 绘图Matplotlib 的mpl_toolkits.mplot3d模块支持 3D 图表如 3D 散点图、3D 曲面图。示例简单 3D 线图from mpl_toolkits.mplot3d import Axes3D fig plt.figure(figsize(8, 6)) ax fig.add_subplot(111, projection3d) # 生成数据 x np.linspace(0, 10, 100) y np.sin(x) z np.cos(x) ax.plot(x, y, z, colorred, linewidth2) ax.set_xlabel(X) ax.set_ylabel(Y) ax.set_zlabel(Z) ax.set_title(3D Line Plot) plt.show()Matplotlib 的核心是灵活的定制化能力从简单的快速绘图到复杂的多子图布局、专业可视化报告都能满足需求。如果需要针对具体场景如数据分析中的可视化、机器学习结果展示深入讲解可以告诉我。