NumPy 简介与安装

NumPy 简介与安装

目录


NumPy 简介

NumPy(Numerical Python)是 Python 中用于科学计算的基础库,提供了高性能的多维数组对象和工具。

主要特点

  1. 多维数组对象:ndarray,高效存储和操作多维数据
  2. 数学函数库:大量数学、统计和线性代数函数
  3. 广播机制:对不同形状数组进行运算
  4. C/C++ 集成:底层用 C 实现,性能高效
  5. 广泛支持:许多科学计算库的基础

为什么使用 NumPy?

python 复制代码
# 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. 性能优势

python 复制代码
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() - start

print(f"Python 列表: {time1:.6f} 秒")
print(f"NumPy 数组: {time2:.6f} 秒")
print(f"NumPy 快 {time1/time2:.0f} 倍")

2. 内存效率

python 复制代码
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(推荐)

bash 复制代码
pip install numpy

方法 2:使用 conda

bash 复制代码
conda install numpy

方法 3:从源码安装

bash 复制代码
git clone https://github.com/numpy/numpy.git
cd numpy
python setup.py install

安装特定版本

bash 复制代码
# 安装特定版本
pip install numpy==1.24.0

# 安装最新版本
pip install --upgrade numpy

验证安装

检查版本

python 复制代码
import numpy as np

# 查看 NumPy 版本
print(f"NumPy 版本: {np.__version__}")

# 查看配置信息
print(np.show_config())

基本测试

python 复制代码
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:创建和操作数组

python 复制代码
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:数组属性

python 复制代码
import numpy as np

arr = 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:数学运算

python 复制代码
import numpy as np

a = 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:数组统计

python 复制代码
import numpy as np

arr = 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 科学计算的基础库:

  1. 高性能:比纯 Python 快得多
  2. 内存高效:比列表占用更少内存
  3. 功能丰富:大量数学和科学计算函数
  4. 易于使用:简洁的 API

相关推荐
m沐沐4 天前
【计算机视觉】OpenCV 模板匹配银行卡数字识别---下
人工智能·python·opencv·计算机视觉·pycharm·numpy
云和数据.ChenGuang6 天前
大模型厂商常用的数据库有哪些?
数据库·人工智能·pytorch·深度学习·numpy
MATLAB代码顾问7 天前
Python NumPy数值计算核心指南
开发语言·python·numpy
FBI HackerHarry浩7 天前
解决pip 安装 numpy 时元数据生成失败
numpy·pip
m沐沐8 天前
【计算机视觉】OpenCV 模板匹配银行卡数字识别---上
人工智能·后端·python·opencv·计算机视觉·pycharm·numpy
iRayCheung11 天前
virtualbox安装的ubuntu系统跑numpy报错
linux·ubuntu·numpy
SilentSamsara12 天前
scikit-learn 工作流工程化:Pipeline、ColumnTransformer 与自定义转换器
开发语言·人工智能·python·机器学习·青少年编程·numpy·scikit-learn
SilentSamsara12 天前
NumPy 进阶:广播机制、ufunc 与向量化计算的工程实践
开发语言·python·青少年编程·性能优化·numpy
DogDaoDao13 天前
【第 04 篇】列表与元组 —— 序列类型核心详解
人工智能·python·深度学习·神经网络·机器学习·conda·numpy
zyl8372113 天前
Python NumPy 学习
python·学习·numpy