NumPy 简介与安装
NumPy 简介与安装
目录
- NumPy 简介
- NumPy 的优势
- 安装 NumPy
- 验证安装
- 基本使用示例
NumPy 简介
NumPy(Numerical Python)是 Python 中用于科学计算的基础库,提供了高性能的多维数组对象和工具。
主要特点
- 多维数组对象:ndarray,高效存储和操作多维数据
- 数学函数库:大量数学、统计和线性代数函数
- 广播机制:对不同形状数组进行运算
- C/C++ 集成:底层用 C 实现,性能高效
- 广泛支持:许多科学计算库的基础
为什么使用 NumPy?
# Python 列表运算(慢)
python_list = [1, 2, 3, 4, 5]
result = [x * 2 for x in python_list]
print(result) # [2, 4, 6, 8, 10]# NumPy 数组运算(快)
import numpy as np
numpy_array = np.array([1, 2, 3, 4, 5])
result = numpy_array * 2
print(result) # [2 4 6 8 10]
NumPy 的优势
1. 性能优势
import numpy as np
import time# 创建大数据集
size = 1000000
python_list = list(range(size))
numpy_array = np.arange(size)# Python 列表运算时间
start = time.time()
result1 = [x * 2 for x in python_list]
time1 = time.time() - start# NumPy 数组运算时间
start = time.time()
result2 = numpy_array * 2
time2 = time.time() - startprint(f"Python 列表: {time1:.6f} 秒")
print(f"NumPy 数组: {time2:.6f} 秒")
print(f"NumPy 快 {time1/time2:.0f} 倍")
2. 内存效率
import numpy as np
import sys# Python 列表内存占用
python_list = [1, 2, 3, 4, 5]
print(f"Python 列表内存: {sys.getsizeof(python_list)} 字节")# NumPy 数组内存占用
numpy_array = np.array([1, 2, 3, 4, 5])
print(f"NumPy 数组内存: {numpy_array.nbytes} 字节")
print(f"NumPy 节省内存: {(sys.getsizeof(python_list) - numpy_array.nbytes) / sys.getsizeof(python_list) * 100:.1f}%")
3. 丰富的功能
NumPy 提供了丰富的数学和科学计算功能,无需自己实现。
安装 NumPy
方法 1:使用 pip(推荐)
pip install numpy
方法 2:使用 conda
conda install numpy
方法 3:从源码安装
git clone https://github.com/numpy/numpy.git
cd numpy
python setup.py install
安装特定版本
# 安装特定版本
pip install numpy==1.24.0# 安装最新版本
pip install --upgrade numpy
验证安装
检查版本
import numpy as np# 查看 NumPy 版本
print(f"NumPy 版本: {np.__version__}")# 查看配置信息
print(np.show_config())
基本测试
import numpy as np# 创建数组
arr = np.array([1, 2, 3, 4, 5])
print(f"创建的数组: {arr}")
print(f"数组类型: {type(arr)}")
print(f"数组形状: {arr.shape}")
print(f"数组维度: {arr.ndim}")
print(f"数组数据类型: {arr.dtype}")# 基本运算
print(f"数组求和: {arr.sum()}")
print(f"数组平均值: {arr.mean()}")
print(f"数组最大值: {arr.max()}")
print(f"数组最小值: {arr.min()}")
基本使用示例
示例 1:创建和操作数组
import numpy as np# 创建一维数组
arr1d = np.array([1, 2, 3, 4, 5])
print(f"一维数组: {arr1d}")# 创建二维数组
arr2d = np.array([[1, 2, 3], [4, 5, 6]])
print(f"\n二维数组:\n{arr2d}")# 数组运算
print(f"\n数组乘以 2:\n{arr1d * 2}")
print(f"\n数组平方:\n{arr1d ** 2}")
示例 2:数组属性
import numpy as nparr = np.array([[1, 2, 3], [4, 5, 6]])print(f"数组:\n{arr}")
print(f"形状: {arr.shape}") # (2, 3)
print(f"维度: {arr.ndim}") # 2
print(f"大小: {arr.size}") # 6
print(f"数据类型: {arr.dtype}") # int64
print(f"元素大小: {arr.itemsize}") # 8 字节
print(f"总内存: {arr.nbytes}") # 48 字节
示例 3:数学运算
import numpy as npa = np.array([1, 2, 3, 4])
b = np.array([5, 6, 7, 8])print(f"数组 a: {a}")
print(f"数组 b: {b}")
print(f"加法: {a + b}")
print(f"减法: {a - b}")
print(f"乘法: {a * b}")
print(f"除法: {a / b}")
print(f"幂运算: {a ** 2}")
print(f"点积: {np.dot(a, b)}")
示例 4:数组统计
import numpy as nparr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])print(f"数组: {arr}")
print(f"求和: {arr.sum()}")
print(f"平均值: {arr.mean()}")
print(f"中位数: {np.median(arr)}")
print(f"标准差: {arr.std()}")
print(f"方差: {arr.var()}")
print(f"最大值: {arr.max()}")
print(f"最小值: {arr.min()}")
print(f"最大值位置: {arr.argmax()}")
print(f"最小值位置: {arr.argmin()}")
总结
NumPy 是 Python 科学计算的基础库:
- 高性能:比纯 Python 快得多
- 内存高效:比列表占用更少内存
- 功能丰富:大量数学和科学计算函数
- 易于使用:简洁的 API
