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

相关推荐
wudl55665 小时前
NumPy -数组运算与操作
numpy
云和数据.ChenGuang1 天前
SyntaxError: Non-UTF-8 code starting
人工智能·python·numpy
景彡先生5 天前
Python NumPy广播机制详解:从原理到实战,数组运算的“隐形翅膀”
开发语言·python·numpy
冰糖拌面5 天前
trimesh库初步接触
numpy
云烟成雨TD8 天前
NumPy 2.x 完全指南【四十二】线性代数之向量运算
python·机器学习·numpy
做科研的周师兄8 天前
【机器学习入门】9.2:感知机 Python 实践代码模板(苹果香蕉分类任务适配)
人工智能·python·学习·机器学习·分类·数据挖掘·numpy
全栈探索者8 天前
numpy基础
python·数据分析·numpy
代码AI弗森11 天前
Python × NumPy」 vs 「JavaScript × TensorFlow.js」生态全景图
javascript·python·numpy
犽戾武12 天前
1. 简单回顾Numpy神经网络
人工智能·神经网络·numpy