Python数据分析入门:NumPy核心指南

开始学习NumPy:Python数据分析的核心库

NumPy(Numerical Python)是Python中用于科学计算的基础库,它提供了高效的多维数组对象(称为ndarray)和丰富的数学函数。NumPy是数据分析、机器学习和科学计算的核心,因为它支持向量化操作,比纯Python代码快得多。下面,我将逐步引导你入门,从安装到基本操作,确保内容清晰易懂。所有数学表达式都按规范格式呈现。


1. 什么是NumPy?为什么重要?

NumPy的核心是ndarray(N-dimensional array),这是一个多维数组结构,支持高效的元素级运算。它的优势包括:

  • 高效性:基于C语言实现,运算速度快。
  • 广播机制:允许对不同形状的数组进行数学运算,例如,标量与数组相加:$s + \mathbf{A}$,其中$s$是标量,$\mathbf{A}$是矩阵。
  • 数学函数:提供丰富的函数,如求和、平均值、点积等。

NumPy是其他库(如Pandas和Matplotlib)的基础,因此掌握它是数据分析的第一步。


2. 安装NumPy

如果你还没有安装NumPy,可以使用pip命令安装。打开终端或命令提示符,输入:

pip install numpy

安装完成后,在Python脚本中导入库:

import numpy as np  # 通常使用np作为别名


3. 创建NumPy数组

数组是NumPy的核心对象。以下是创建数组的基本方法:

  • 一维数组:类似Python列表。
  • 二维数组:表示矩阵,例如 $\begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix}$。
  • 特殊数组:如全零或单位矩阵。

代码示例:

import numpy as np

# 创建一维数组
arr1 = np.array([1, 2, 3, 4])  # 输出:[1 2 3 4]

# 创建二维数组(矩阵)
arr2 = np.array([[1, 2], [3, 4]])  # 输出:[[1 2] [3 4]]

# 创建全零数组
zeros = np.zeros((2, 3))  # 创建一个2行3列的零矩阵:[[0. 0. 0.] [0. 0. 0.]]

# 创建单位矩阵
identity = np.eye(3)  # 3x3单位矩阵:[[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]

解释

  • np.array() 函数将Python列表转换为ndarray。
  • 数组的维度通过shape属性查看:arr2.shape 返回 (2, 2)
  • 数据类型通过dtype属性查看:arr1.dtype 通常是 int64

4. 数组索引和切片

索引和切片操作类似Python列表,但支持多维访问。规则:

  • 一维索引arr[index]
  • 二维索引arr[row, col]
  • 切片start:stop:step,用于提取子数组。

数学上,切片可以表示为子集:例如,从数组 $\mathbf{A}$ 中提取第1行到第2行。

代码示例:

import numpy as np

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])  # 3x3矩阵

# 索引单个元素
element = arr[0, 1]  # 第0行第1列,输出:2

# 切片行
row_slice = arr[1, :]  # 第1行所有列,输出:[4 5 6]

# 切片列
col_slice = arr[:, 0:2]  # 所有行,第0列到第1列(不包括第2列),输出:[[1 2] [4 5] [7 8]]

# 使用步长
step_slice = arr[::2, ::2]  # 每隔一行和一列提取,输出:[[1 3] [7 9]]

注意:切片是视图(不复制数据),修改切片会影响原数组。


5. 基本数学运算

NumPy支持元素级运算和广播,使数学操作高效。常用运算包括:

  • 元素级运算:加减乘除,如 $\mathbf{A} + \mathbf{B}$。
  • 广播:小数组自动扩展以匹配大数组形状,例如标量加数组:$c + \mathbf{A}$。
  • 点积:使用 np.dot()@ 运算符,数学公式为 $\mathbf{a} \cdot \mathbf{b} = \sum_{i} a_i b_i$。
  • 统计函数:如 np.sum(), np.mean()

代码示例:

import numpy as np

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 元素级加法
add_result = a + b  # 输出:[5 7 9]

# 元素级乘法
mul_result = a * b  # 输出:[4 10 18]

# 点积(内积)
dot_product = np.dot(a, b)  # 或 a @ b,计算:1*4 + 2*5 + 3*6 = 32

# 广播示例:标量加数组
scalar = 10
broadcast_result = scalar + a  # 输出:[11 12 13]

# 统计函数:求和和平均值
sum_val = np.sum(a)  # 输出:6
mean_val = np.mean(a)  # 输出:2.0

解释

  • 点积是线性代数的基础,用于计算向量相似性。
  • 广播机制允许灵活运算,无需显式循环。

6. 进阶概念:形状操作和通用函数

一旦掌握基础,可以学习:

  • 改变形状reshape() 方法,例如将一维数组转为二维。
  • 通用函数(ufunc):如 np.sin(), np.exp(),支持向量化数学函数。
  • 聚合操作:沿轴计算,如 np.sum(axis=0) 对列求和。

公式示例:指数函数作用于数组 $\mathbf{x}$ 得到 $\exp(\mathbf{x})$。

代码示例:

import numpy as np

arr = np.array([1, 2, 3, 4])

# 改变形状:转为2x2矩阵
reshaped = arr.reshape((2, 2))  # 输出:[[1 2] [3 4]]

# 通用函数:计算正弦
sin_result = np.sin(arr)  # 输出:[0.8415 0.9093 0.1411 -0.7568](近似值)

# 聚合操作:沿轴求和
matrix = np.array([[1, 2], [3, 4]])
sum_rows = np.sum(matrix, axis=0)  # 对列求和(axis=0),输出:[4 6]
sum_cols = np.sum(matrix, axis=1)  # 对行求和(axis=1),输出:[3 7]


7. 总结和下一步

通过以上步骤,你已经学会了NumPy的基本操作:

  • 创建和索引数组。
  • 执行数学运算和广播。
  • 使用常用函数。

练习建议

  • 尝试创建自己的数组,并计算点积或平均值。
  • 探索更多函数,如 np.random 生成随机数组。
  • 下一步,学习Pandas(用于数据处理)和Matplotlib(用于可视化),它们都依赖NumPy。

NumPy是数据分析的基石,坚持练习能快速提升技能。如果有具体问题,随时继续提问!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值