pin_drop当前位置:知识文库 ❯ 图文
NumPy库简介与安装教程 - Python科学计算入门指南
一、概述
NumPy(Numerical Python)是Python科学计算的基石库,提供了高性能的多维数组对象ndarray、广播机制、线性代数运算、傅里叶变换和随机数生成等功能。NumPy的核心是用C语言编写的,运算速度远超原生Python列表,是pandas、scikit-learn、TensorFlow等库的底层依赖。
二、导入语法
在使用NumPy之前,需要先导入该库。社区约定俗成的导入方式是:
代码示例
import numpy as np
使用别名np可以大幅简化后续代码的书写,这也是全球Python开发者的通用惯例。
三、安装方法
NumPy可以通过多种包管理工具进行安装,以下是常用的安装命令:
四、代码示例
示例1:安装并导入numpy
代码示例
import numpy as np
# 查看版本号
print(f"NumPy版本: {np.__version__}")
# 查看安装路径
print(f"安装路径: {np.__file__}")
# 查看配置信息
print(f"配置信息: {np.show_config()}")输出:
代码示例
NumPy版本: 1.26.0
安装路径: C:\Python39\lib\site-packages\numpy\__init__.py
配置信息: ...示例2:numpy数组与Python列表性能对比
代码示例
import numpy as np
import time
# Python列表求和
py_list = list(range(1000000))
start = time.time()
sum(py_list)
py_time = time.time() - start
# NumPy数组求和
np_array = np.arange(1000000)
start = time.time()
np.sum(np_array)
np_time = time.time() - start
print(f"Python列表耗时: {py_time*1000:.2f}ms")
print(f"NumPy数组耗时: {np_time*1000:.2f}ms")
print(f"NumPy速度提升: {py_time/np_time:.1f}倍")输出:
代码示例
Python列表耗时: 25.30ms
NumPy数组耗时: 0.98ms
NumPy速度提升: 25.8倍提示:从输出结果可以看出,NumPy对100万元素求和的速度是Python列表的约25倍,这得益于NumPy底层C语言实现和向量化运算。
示例3:numpy核心功能概览
代码示例
import numpy as np
# 1. 数组创建
arr = np.array([1, 2, 3, 4, 5])
print(f"一维数组: {arr}")
# 2. 多维数组
matrix = np.array([[1, 2, 3], [4, 5, 6]])
print(f"二维数组:\n{matrix}")
# 3. 特殊数组
print(f"全零数组: {np.zeros(3)}")
print(f"全一数组: {np.ones(3)}")
print(f"等差数组: {np.arange(0, 10, 2)}")
print(f"随机数组: {np.random.rand(3)}")
# 4. 数组运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
print(f"数组加法: {a + b}")
print(f"数组乘法: {a * b}")
print(f"数组点积: {np.dot(a, b)}")输出:
代码示例
一维数组: [1 2 3 4 5]
二维数组:
[[1 2 3]
[4 5 6]]
全零数组: [0. 0. 0.]
全一数组: [1. 1. 1.]
等差数组: [0 2 4 6 8]
随机数组: [0.548 0.715 0.603]
数组加法: [5 7 9]
数组乘法: [ 4 10 18]
数组点积: 32五、实际应用场景
-
数据分析:使用numpy进行大规模数值计算,如统计、矩阵运算
-
机器学习:numpy数组是特征数据和模型参数的标准存储格式
-
图像处理:图像以numpy三维数组形式存储和操作
六、注意事项
注意:numpy是第三方库,需要通过
pip install numpy安装后才能使用。
注意:numpy数组中的元素必须是相同类型,与Python列表可以混合类型不同。
注意:导入numpy时约定使用
import numpy as np,这是社区通用惯例。
七、科学计算库对比
NumPy与Python列表、pandas在特性和适用场景上有明显差异,以下是详细对比:
八、小结
-
核心定位:NumPy是Python科学计算的核心库,提供高性能多维数组ndarray
-
性能优势:NumPy底层用C实现,运算速度比Python列表快数十倍
-
类型约束:ndarray要求元素同类型,支持广播机制和向量化运算
-
生态地位:NumPy是pandas、scikit-learn等库的底层依赖
小贴士
NumPy的名称来源于"Numerical Python",由Travis Olliphant于2005年创建。它的前身是Numeric和Numarray两个库,NumPy合并了这两者的优点。如今,NumPy已成为Python数据科学生态系统的基础设施,几乎所有数据相关的库都直接或间接依赖它。了解更多可以访问NumPy官网。
九、练习题
练习1
安装numpy库,打印版本号,并创建一个包含1到10的一维数组。
练习2
编写程序,对比numpy数组和Python列表对100万元素求和的性能差异。
练习3
创建一个3x3的二维数组,分别使用numpy和Python列表实现,对比两者的内存占用(使用sys.getsizeof)。
常见问题
NumPy为什么比Python列表快?
NumPy的核心代码使用C语言编写,采用连续内存存储和向量化运算,避免了Python列表的循环开销和类型检查。同时,NumPy可以利用CPU的SIMD指令进行并行计算,大幅提升性能。
NumPy数组为什么要求元素类型相同?
类型相同使得NumPy可以在连续的内存块中存储数据,每个元素占用固定的字节数。这种紧凑的内存布局不仅节省空间,还能让CPU高效地进行向量化运算,是NumPy高性能的关键设计。
什么时候用NumPy,什么时候用pandas?
当你需要纯数值计算、矩阵运算或底层数组操作时,使用NumPy。当你需要处理表格数据、时间序列或需要进行数据清洗和聚合分析时,使用pandas。pandas的底层数据结构(DataFrame和Series)正是基于NumPy数组构建的。
如何选择合适的NumPy版本?
建议使用最新稳定版本以获取最佳性能和安全修复。如果项目依赖特定版本的其他库(如TensorFlow、PyTorch),应根据这些库的兼容性要求选择对应的NumPy版本。可以使用pip install numpy==版本号安装指定版本。
本文涉及AI创作
内容由AI创作,请仔细甄别