- images
- results
- .gitignore
- 1.1概论.ipynb
- 1.2 环境配置.pdf
- 1.3数据类型.ipynb
- 1.4 人机交互.ipynb
- 1.5 对象与变量.ipynb
- 1.6 编码与命名规范.ipynb
- 2.1 数值类型.ipynb
- 2.2 数值类型转换.ipynb
- 2.3 数值元算.ipynb
- 2.4常用数学运算函数.ipynb
- 2.5 math 模块及其应用.ipynb
- 2.6.1 逻辑值测试.ipynb
- 2.6.2 成员运算.ipynb
- 2.6.3 比较运算.ipynb
- 2.6.4 布尔运算.ipynb
- 2.6.5 运算优先级.ipynb
- 2.ipynb
- 3.1 流程控制结构.ipynb
- 3.3.1 for 循环语句.ipynb
- 3.3.3 rang.ipynb
- 3.3.3 while 循环语句.ipynb
- 3.4 and 3.5 分支结构和条件.ipynb
- 3.6 and 3.7 .ipynb
- 3.9 异常处理.ipynb
- 4 函数和模块化编程.ipynb
- 4.1 函数的定义、调用与返回值.ipynb
- 4.2 函数的参数传递.ipynb
- 4.3 变量的作用域.ipynb
- 4.4 匿名函数.ipynb
- 4.5 递归.ipynb
- 4.6 内置函数.ipynb
- 4.7 模块化程序设计.ipynb
- 5.1 序列通用操作.ipynb
- 5.1.1 索引.ipynb
- 5.1.2 切片.ipynb
- 5.1.3 序列拼接与重复.ipynb
- 5.1.4 成员测试.ipynb
- 5.2.1 字符串的创建.ipynb
- 5.2.2 字符串常量.ipynb
- 5.2.4 字符串的遍历.ipynb
- 5.2.5 文件遍历.ipynb
- 5.2.6 字符串的处理方法.ipynb
- 5.2.7 字符串格式化.ipynb
- 5.2.8 转义字符.ipynb
- 5.3 random 模块及其应用.ipynb
- 6.1 元组.ipynb
- 6.2 列表.ipynb
- 6.2.1 列表的创建.ipynb
- 6.2.2 列表的更新.ipynb
- 6.2.3 列表的删除.ipynb
- 6.2.4 列表的排序.ipynb
- 6.2.5 列表赋值与复制.ipynb
- 6.2.6 列表推导式.ipynb
- 6.2.8 常用内置函数.ipynb
- 6.2.9 列表嵌套及其排序.ipynb
- 6.3 列表综合应用.ipynb
- 7.1.1 集合的创建.ipynb
- 7.1.2可变集合类型的操作.ipynb
- 7.1.3 成员关系.ipynb
- 7.1.4 集合关系.ipynb
- 7.1.5 集合运算.ipynb
- 7.2.1 字典创建.ipynb
- 7.2.2 获取字典值.ipynb
- 7.2.3 修改字典值.ipynb
- 7.2.4内置函数与方法.ipynb
- 7.2.5字典排序输出.ipynb
- 7.3 集合与字典的应用.ipynb
- 8 中 numpy 概述.ipynb
- 8 中panda 库.ipynb
- 8.1 文件的打开与关闭.ipynb
- 8.2 文件读写操作.ipynb
- 8.3 文件的应用.ipynb
- 8.4 numpy 文件操作.ipynb
- 8.4.2 and 3.ipynb
- 8.5.1 pandas文件读写.ipynb
- 8.5.2 and 3 and 4.ipynb
- 9.1 matplotlib 线性图.ipynb
- 9.1.5 数据文化绘图.ipynb
- 9.2 非线性图.ipynb
- 9.3 词云.ipynb
- _overview.md
- _readme.ipynb
- coding_here.ipynb
- dream.png
- score.txt
- score_total.csv
- 成绩分析综合.json
8 中 numpy 概述.ipynb @master — view markup · raw · history · blame
NumPy概述¶
NumPy简介¶

NumPy(Numerical Python)是科学计算和数据分析的基础库,是进行数据处理与可视化的基础,也是科学Python生态系统的基础,支撑着几乎所有进行科学计算的 Python 库,包括 SciPy、Matplotlib、 pandas、 scikit-learn和 scikit-image等。
![]() |
![]() |
|---|---|
NumPy主要支持功能包括:
- 提供快速、节约空间的多维数组,并具有矢量运算和复杂广播能力;
- 为基于数组的计算提供了大量的标准数学函数;
- 提供了线性代数、傅里叶变换、随机生成等高级数学功能;
- 提供了C、C++、Fortran等语言的接口支持
Python中的列表(List)可以保存一组数据,可以用来当作数组使用。但由于列表的元素可以是任何对象,因此列表中保存的是对象的指针,这种结构不适合做数值运算。Python也提供了array模块,能直接保存数值,但它不支持多维数组,也没有各种运算函数,也不适合做数值运算。NumPy的诞生弥补了这些缺陷,它提供了两种基本对象:
- ndarray:n-dimensional array object,用于存储单一数据类型的多维数组。
- ufunc:universal function object,能够能够对数组进行处理的标准函数。
NumPy导入¶
通常推荐用以下的方式导入NumPy函数库,库名被缩写为np是一个被广泛采用的约定。
import numpy as np
导入NumPy后,可使用NumPy库中相关帮助函数的获取相关文档与源码。
- np.__version__
查看NumPy库的版本。
import numpy as np
import numpy as np
np.__version__
- numpy.lookfor(what, module=None, import_modules=True, regenerate=False, output=None)
对NumPy文档执行关键字what搜索,返回搜索的结果。
np.lookfor('lookfor')
- numpy.info(object=None, maxwidth=76, output=None, toplevel='numpy')
获取并返回函数、类或模块的帮助信息。
np.info(np.info) # 运行将返回numpy.info()函数相关文档
- numpy.source(object, output=<_io.TextIOWrapper>)
打印NumPy对象的源代码或将其写入文件。仅用 Python 编写的对象可返回源代码,库中许多用C语言定义的函数和类不会返回有用的信息。
np.source(np.source) # 运行将返回numpy.source()函数源代码
np.source(np.array) # numpy.array()函数由C语言实现,运行将返回'Not available for this object.'
与列表不同,数组在创建时具有固定的大小,且数组中的所有元素的数据类型都要相同。常见的包括一维数组、二维数组和三维数组。更高维度的数组使用比较少,此处不赘述。

NumPy库axis表示轴的意思,指定某个axis,就是沿着这个axis的方向做相关操作。一维数组、二维数组和三维数组的axis见上图,明显可以发现,数组有几维就有几个轴。
由于在数组中所有元素的数据类型都是一样的,所以数组的运算和存储效率相对于列表来说要高得多。而且,NumPy专门针对数组的操作和运算进行了设计,存储效率和输入输出性能远优于Python中的嵌套列表。通常数组越大,NumPy的优势就越明显。
分别对有100000个数据的列表和数组,分别对其中每个数字求平方值。根据程序执行所消耗时间对比来比较其运行效率。
import datetime # 导入datetime,用于计算程序运行时间
start = datetime.datetime.now() # 记录程序开始时间
b = list(range(100000)) # 生成包含100000个数据的列表
a = [i**2 for i in b] # 使用列表推导式生成平方值列表
end = datetime.datetime.now() # 记录程序结束时间
during = (end - start).seconds * 1000 + (end - start).microseconds / 1000 # 计算耗时,精确到毫秒
print(f'\n耗时:{during}毫秒')
import datetime # 导入datetime,用于计算程序运行时间
import numpy as np
start = datetime.datetime.now() # 记录程序开始时间
a = np.arange(100000) # 生成包含100000个数据的数组
b = a**2 # 使用数组运算生成平方值数组
end = datetime.datetime.now() # 记录程序结束时间
during = (end - start).seconds * 1000 + (end - start).microseconds / 1000 # 计算耗时,精确到毫秒
print(f'\n耗时:{during}毫秒')

