NumPy 入门:科学计算的核心库

NumPy 入门:科学计算的核心库

一、NumPy 是什么?

NumPy(Numerical Python)是 Python 中用于科学计算的核心库,专为处理数组和矩阵设计。它能直接对整个数组执行数学运算,大幅减少循环语句的使用,同时提供了丰富的数学函数,让数据处理和数值计算变得高效简洁。

无论是数据分析、机器学习还是科学计算,NumPy 都是基础工具 —— 后续的 Pandas、Matplotlib 等库都依赖于它的数据结构。

二、安装与导入

1. 安装方法

NumPy 不是 Python 标准库,需手动安装,推荐使用国内源加速:

# 方法1:使用pip
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

# 方法2:使用conda(适合Anaconda环境)
conda install numpy

2. 导入方式

惯例是导入时起别名np,方便后续使用:

import numpy as np

三、核心对象:Ndarray(N 维数组)

Ndarray 是 NumPy 的核心数据结构,代表 “N 维数组”,是一系列同类型数据的集合,以 0 为起始下标索引。它的关键特点:

  • 所有元素数据类型一致(保证计算效率);
  • 支持多维(1D 向量、2D 矩阵、3D 及更高维度);
  • 通过 “轴(axis)” 区分维度:axis=0 表示第 1 维(行方向),axis=1 表示第 2 维(列方向),更高维度依次类推。

四、创建 Ndarray 数组的常用函数

NumPy 提供了多种创建数组的函数,覆盖不同场景需求:

函数作用关键参数示例
array()从列表 / 嵌套列表创建数组object(输入数据)、dtype(数据类型)np.array([1,2,3]) → [1 2 3]
empty(shape)创建指定形状的未初始化数组(值随机)shape(形状,如 (3,2))np.empty((2,2)) → 2x2 随机值数组
zeros(shape)创建全 0 数组shapedtype(默认 float)np.zeros(3) → [0. 0. 0.]
ones(shape)创建全 1 数组shapedtypenp.ones((2,3), dtype=int) → [[1 1 1],[1 1 1]]
full(shape, fill_value)创建填充指定值的数组shapefill_value(填充值)np.full((3,2), 1024) → 3x2 全为 1024 的数组
eye(N, M)创建对角矩阵(对角线为 1,其余为 0)N(行数)、M(列数,默认 = N)np.eye(3) → 3x3 单位矩阵
arange(start, stop, step)生成等差数列(类似 range)start(起始)、stop(终止,不含)、step(步长)np.arange(1,11,2) → [1 3 5 7 9]
linspace(start, stop, num)生成等间隔的等差数列(含终止值)num(样本数,默认 50)np.linspace(0,1,5) → [0. 0.25 0.5 0.75 1. ]
logspace(start, stop, num)生成等比数列(以 base 为底)base(底数,默认 10)np.logspace(1,2,10) → 10 到 100 的 10 个等比数

随机数组创建函数

NumPy 的random模块提供了多种随机数生成函数,适合模拟和抽样:

函数作用示例
np.random.rand(d0,d1...)生成 [0,1) 之间的随机数(均匀分布)np.random.rand(2,3) → 2x3 随机数组
np.random.random(size)生成 [0,1) 随机数(一维数组)np.random.random(5) → 长度 5 的一维随机数组
np.random.randint(low, high, size)生成 [low, high) 的整数随机数np.random.randint(1,10,(2,2)) → 2x2 的 1-9 整数
np.random.randn(d0,d1...)生成标准正态分布(均值 0,标准差 1)的随机数np.random.randn(3) → 3 个符合标准正态分布的数
np.random.normal(loc, scale, size)生成高斯分布随机数np.random.normal(loc=1, scale=2, size=5) → 均值 1、标准差 2 的 5 个数

五、Ndarray 的核心属性

通过属性可以快速了解数组的基本信息:

属性含义示例(数组arr = np.array([[1,2,3],[4,5,6]])
ndim维度(秩)arr.ndim → 2(二维数组)
shape形状(n 行 m 列)arr.shape → (2,3)(2 行 3 列)
size元素总个数arr.size → 6(2×3)
dtype元素数据类型arr.dtype → int64(默认整数类型)
itemsize每个元素的字节大小arr.itemsize → 8(int64 占 8 字节)

六、切片与索引

Ndarray 的索引和切片与 Python 列表类似,但支持多维操作,语法简洁:

1. 基本索引(获取单个元素)

arr = np.arange(15).reshape(5,3)  # 创建5行3列的数组
print(arr[2][1])  # 第3行第2列(下标从0开始)→ 7
print(arr[2,1])   # 等价写法 → 7

2. 切片(获取子数组)

# 取第3行及之后的所有行
print(arr[2:])  # → [[6 7 8], [9 10 11], [12 13 14]]

# 取第2-4行(不含第5行),第2列及之后
print(arr[1:4, 1:])  # → [[4 5], [7 8], [10 11]]

3. 省略号(...)

用于简化多维数组的索引,自动补全维度:

# 取所有行的第2列
print(arr[..., 1])  # → [1 4 7 10 13]

# 取第2行的所有列
print(arr[1, ...])  # → [3 4 5]

七、NumPy 数组 vs Python 列表

特点NumPy 数组Python 列表
元素类型所有元素类型必须一致可包含不同类型元素
运算效率支持向量化运算(直接对整个数组操作),速度快需循环逐个元素操作,效率低
内存占用存储紧凑,内存效率高存储松散,内存占用大
功能内置大量数学函数(求和、均值等)功能简单,需手动实现复杂运算

八、入门练习

  1. 生成一个 3×3 的对角矩阵(对角线为 1,其余为 0):

    np.eye(3)
    
  2. 创建长度为 10 的数组,值在 0~1 之间(不含 0 和 1):

    np.random.random(10)  # 或 np.linspace(0,1,12)[1:-1]
    
  3. 创建长度为 10 的全 0 数组,第 5 个元素为 1(下标从 0 开始):

    arr = np.zeros(10)
    arr[4] = 1  # 第5个元素下标为4
    

NumPy 是数据科学的基石,掌握其数组创建、属性和索引操作,能为后续数据分析和机器学习打下坚实基础。后续可进一步学习数组的数学运算、广播机制等高级特性~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值