网站分页怎么做专业团队值得信赖
2026/3/29 15:10:41 网站建设 项目流程
网站分页怎么做,专业团队值得信赖,长春网站建设方案,北京公司响应式网站建设价位Day 46#xff1a;【99天精通Python】数据分析 NumPy 基础 - 高性能计算的基石 前言 欢迎来到 实战篇 的第一天#xff08;第46天#xff09;#xff01; 从今天开始#xff0c;我们将踏入 Python 最引以为傲的领域——数据分析与科学计算。在这个领域#xff0c;Python …Day 46【99天精通Python】数据分析 NumPy 基础 - 高性能计算的基石前言欢迎来到实战篇的第一天第46天从今天开始我们将踏入 Python 最引以为傲的领域——数据分析与科学计算。在这个领域Python 是当之无愧的霸主。无论是金融量化、人工智能、图像处理还是科研数据分析Python 都是首选语言。而这一切的基石就是NumPy。你可能会问“Python 不是自带列表List吗为什么还要学一个 NumPy 数组”简单的回答是NumPy 比 Python 列表快 10 倍甚至 100 倍而且更省内存。本节内容数据分析三剑客简介NumPy ndarray vs Python List创建数组的多种方式数组的属性 (shape, dtype)基础运算与广播机制 (Broadcasting)索引与切片入门一、数据分析三剑客在 Python 数据分析领域有三个库是必须掌握的核心NumPy (Numerical Python)提供高性能的数组计算是其他所有库的基础。Pandas基于 NumPy提供了类似 Excel 的表格数据结构 (DataFrame)擅长数据清洗和处理。Matplotlib负责画图将数据可视化。我们先从地基 NumPy 开始。安装pipinstallnumpy二、为什么用 NumPy2.1 性能对比Python 的 List 是一个大杂烩里面可以存整数、字符串、对象这导致它在内存中存储是不连续的计算时需要检查每个元素的类型效率低下。NumPy 的数组 (ndarray) 要求所有元素类型相同在内存中是连续存储的并且底层用 C 语言编写可以充分利用 CPU 的 SIMD 指令集进行并行计算。实测对比计算 100 万个数字的平方和。importnumpyasnpimporttime size1_000_000# --- Python List ---list_datalist(range(size))starttime.time()sum([x**2forxinlist_data])print(fList 耗时:{time.time()-start:.4f}秒)# --- NumPy Array ---np_datanp.arange(size)starttime.time()np.sum(np_data**2)print(fNumPy 耗时:{time.time()-start:.4f}秒)结果NumPy 通常比 List 快 10-50 倍三、创建数组 (ndarray)ndarray(N-dimensional array object) 是 NumPy 的核心对象。3.1 从列表创建np.array()importnumpyasnp# 一维数组arr1np.array([1,2,3,4,5])print(arr1)# 二维数组 (矩阵)arr2np.array([[1,2,3],[4,5,6]])print(arr2)3.2 快速生成# 生成全0数组 (float类型)print(np.zeros(5))# [0. 0. 0. 0. 0.]# 生成全1数组 (指定int类型)print(np.ones((2,3),dtypeint))# [[1 1 1]# [1 1 1]]# 类似 range()print(np.arange(0,10,2))# [0 2 4 6 8]# 等差数列 (linspace): 0到1之间生成5个点print(np.linspace(0,1,5))# [0. 0.25 0.5 0.75 1. ]# 随机数 (0-1之间)print(np.random.rand(3,3))四、数组的属性了解数组长什么样非常重要。arrnp.array([[1,2,3],[4,5,6]])print(f维度 (ndim):{arr.ndim})# 2print(f形状 (shape):{arr.shape})# (2, 3) - 2行3列print(f元素总数 (size):{arr.size})# 6print(f数据类型 (dtype):{arr.dtype})# int64 (或 int32)注意NumPy 的数据类型比 Python 丰富如int8,int16,float32等这有助于精确控制内存占用。五、基础运算与广播 (Broadcasting)这是 NumPy 最爽的地方。在 Python List 里[1, 2] [3, 4]结果是[1, 2, 3, 4](拼接)。但在 NumPy 里运算是基于元素 (Element-wise)的。5.1 数组与数字运算arrnp.array([1,2,3])print(arr10)# [11 12 13] (每个元素都10)print(arr*2)# [2 4 6]print(arr1)# [False True True] (生成布尔数组)5.2 数组与数组运算anp.array([1,2,3])bnp.array([10,20,30])print(ab)# [11 22 33]print(a*b)# [10 40 90] (对应位置相乘不是矩阵乘法)5.3 统计计算arrnp.array([[1,2,3],[4,5,6]])print(np.sum(arr))# 所有元素之和: 21print(np.mean(arr))# 平均值: 3.5print(np.max(arr))# 最大值: 6# 指定维度 (axis)# axis0: 跨行操作 (压缩行保留列) - 计算每一列的和print(np.sum(arr,axis0))# [5 7 9] (14, 25, 36)# axis1: 跨列操作 (压缩列保留行) - 计算每一行的和print(np.sum(arr,axis1))# [6 15]六、索引与切片6.1 一维数组 (同 Python List)arrnp.arange(10)print(arr[2])# 2print(arr[2:5])# [2 3 4]print(arr[::-1])# 反转6.2 多维数组语法arr[行, 列]arrnp.array([[1,2,3],[4,5,6],[7,8,9]])print(arr[0,0])# 1 (第0行第0列)print(arr[1,:])# [4 5 6] (第1行所有列)print(arr[:,1])# [2 5 8] (所有行第1列)print(arr[0:2,1:3])# [[2 3]# [5 6]] (前两行第1-2列)七、小结NumPy核心对象创建运算ndarrayshape, dtype, ndimarray()arange() / linspace()zeros() / ones()Element-wise ( - * /)聚合 (sum, mean, max)Broadcasting (广播)关键要点NumPy 数组类型一致内存连续计算速度极快。shape属性决定了数组的结构。运算默认是对每个元素进行操作。多维切片使用逗号分隔[row, col]。八、课后作业成绩处理创建一个 5x3 的随机整数数组范围 50-100模拟 5 个学生 3 门课的成绩。计算每个学生的平均分。计算每门课的最高分。棋盘生成创建一个 8x8 的矩阵生成国际象棋棋盘的图案0为黑1为白交替出现。提示使用切片赋值arr[::2, ::2] 1等。图像原理一张图片本质上就是一个三维数组 (高, 宽, RGB)。尝试用np.zeros((100, 100, 3), dtypeint)创建一个黑色图片然后将中间 50x50 的区域全部赋值为[255, 0, 0](红色)。下节预告Day 47NumPy 进阶 - 维度变换与布尔索引- 数组形状不合适怎么变怎么快速筛选出大于 60 分的成绩明天我们继续深入 NumPy。系列导航上一篇Day 45 - 进阶篇总结与展望下一篇Day 47 - NumPy进阶待更新

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询