机器学习和数据科学的基石:NumPy详解与实战技巧

目录

一、前言

二、什么是NumPy

三、为什么需要NumPy

[四、NumPy核心对象 ndarray](#四、NumPy核心对象 ndarray)

五、一维数组

六、二维数组(矩阵)

七、查看数组属性

八、快速创建数组

zeros

ones

full

eye

九、生成连续数字

arange

linspace

[十、数组变形 reshape](#十、数组变形 reshape)

十一、数组切片

十二、数组运算

十三、矩阵乘法

十四、统计方法

十五、随机数模块

十六、布尔索引

十七、广播机制(Broadcasting)

十八、常用机器学习技巧

数据归一化

标准化

求协方差矩阵

十九、线性代数模块

二十、NumPy学习路线

二十一、总结


一、前言

在Python数据科学生态中,有一个库几乎无处不在:

复制代码
import numpy as np

无论是:

复制代码
机器学习

深度学习

数据分析

计算机视觉

科学计算

都会看到它的身影。

很多框架实际上都是建立在 NumPy 的思想之上:

复制代码
Scikit-Learn
↓
NumPy

Pandas
↓
NumPy

TensorFlow
↓
NumPy

PyTorch
↓
NumPy

甚至有人说:

学会 NumPy,等于掌握了 Python 数据科学的一半基础。

本文将从零开始,详细讲解 NumPy 的核心概念、常用方法以及开发中的实用技巧。


二、什么是NumPy

NumPy 全称:

复制代码
Numerical Python

即:

复制代码
Python数值计算库

官方网址:

复制代码
https://numpy.org

安装:

复制代码
pip install numpy

导入:

复制代码
import numpy as np

三、为什么需要NumPy

普通Python列表:

复制代码
nums = [1,2,3,4,5]

虽然能存储数据。

但是:

复制代码
计算慢

占用内存大

不支持矩阵运算

例如:

复制代码
a = [1,2,3]

a * 2

输出:

复制代码
[1,2,3,1,2,3]

并不会进行数学运算。

而NumPy:

python 复制代码
arr = np.array([1,2,3])

print(arr * 2)

输出:

复制代码
[2 4 6]

这就是NumPy的优势。


四、NumPy核心对象 ndarray

NumPy最重要的数据结构:

复制代码
ndarray

即:

复制代码
N维数组

创建数组:

python 复制代码
import numpy as np

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

print(arr)

输出:

复制代码
[1 2 3]

查看类型:

复制代码
print(type(arr))

输出:

复制代码
numpy.ndarray

五、一维数组

创建:

python 复制代码
arr = np.array([10,20,30,40])

print(arr)

结果:

复制代码
[10 20 30 40]

获取元素:

复制代码
print(arr[0])

输出:

复制代码
10

六、二维数组(矩阵)

创建矩阵:

python 复制代码
matrix = np.array([
    [1,2,3],
    [4,5,6]
])

print(matrix)

输出:

复制代码
[[1 2 3]
 [4 5 6]]

获取元素:

复制代码
print(matrix[0][1])

结果:

复制代码
2

推荐写法:

复制代码
print(matrix[0,1])

七、查看数组属性

python 复制代码
arr = np.array([
    [1,2,3],
    [4,5,6]
])

查看维度:

复制代码
print(arr.ndim)

输出:

复制代码
2

查看形状:

复制代码
print(arr.shape)

输出:

复制代码
(2,3)

查看元素总数:

复制代码
print(arr.size)

输出:

复制代码
6

查看数据类型:

复制代码
print(arr.dtype)

输出:

复制代码
int64

八、快速创建数组

zeros

创建全0数组:

复制代码
np.zeros((3,4))

结果:

复制代码
[[0. 0. 0. 0.]
 [0. 0. 0. 0.]
 [0. 0. 0. 0.]]

ones

创建全1数组:

复制代码
np.ones((2,3))

full

指定值填充:

复制代码
np.full((3,3),100)

输出:

复制代码
[[100 100 100]
 [100 100 100]
 [100 100 100]]

eye

创建单位矩阵:

复制代码
np.eye(4)

输出:

复制代码
[[1. 0. 0. 0.]
 [0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]]

九、生成连续数字

arange

类似range:

复制代码
np.arange(0,10)

输出:

复制代码
[0 1 2 3 4 5 6 7 8 9]

指定步长:

复制代码
np.arange(0,20,2)

输出:

复制代码
[0 2 4 6 8 10 12 14 16 18]

linspace

生成等间距数据:

复制代码
np.linspace(0,1,5)

输出:

复制代码
[0.   0.25 0.5  0.75 1. ]

机器学习中非常常见。


十、数组变形 reshape

创建:

复制代码
arr = np.arange(12)

结果:

复制代码
[0 1 2 3 4 5 6 7 8 9 10 11]

变成:

复制代码
arr.reshape(3,4)

结果:

复制代码
[[ 0 1 2 3]
 [ 4 5 6 7]
 [ 8 9 10 11]]

自动计算:

复制代码
arr.reshape(2,-1)

输出:

复制代码
[[0 1 2 3 4 5]
 [6 7 8 9 10 11]]

开发中经常使用。


十一、数组切片

复制代码
arr = np.arange(10)

取前三个:

复制代码
arr[:3]

结果:

复制代码
[0 1 2]

取后三个:

复制代码
arr[-3:]

结果:

复制代码
[7 8 9]

二维切片:

复制代码
matrix[:,1]

表示:

复制代码
所有行

第2列

十二、数组运算

加法:

python 复制代码
a = np.array([1,2,3])

b = np.array([4,5,6])

print(a+b)

输出:

复制代码
[5 7 9]

减法:

复制代码
a-b

乘法:

复制代码
a*b

结果:

复制代码
[4 10 18]

注意:

复制代码
这是对应元素相乘

十三、矩阵乘法

机器学习最常见操作:

python 复制代码
A = np.array([
    [1,2],
    [3,4]
])

B = np.array([
    [5,6],
    [7,8]
])

print(A @ B)

输出:

复制代码
[[19 22]
 [43 50]]

也可以:

复制代码
np.matmul(A,B)

十四、统计方法

最大值:

复制代码
arr.max()

最小值:

复制代码
arr.min()

平均值:

复制代码
arr.mean()

求和:

复制代码
arr.sum()

标准差:

复制代码
arr.std()

方差:

复制代码
arr.var()

这些方法在数据分析中极其常用。


十五、随机数模块

生成随机数:

python 复制代码
np.random.rand()

生成数组:

python 复制代码
np.random.rand(3,4)

随机整数:

python 复制代码
np.random.randint(
    0,
    100,
    size=(3,3)
)

输出:

复制代码
[[12 45 78]
 [34 67 89]
 [11 22 99]]

固定随机种子:

复制代码
np.random.seed(42)

保证实验结果一致。


十六、布尔索引

创建:

python 复制代码
arr = np.array([
    10,
    20,
    30,
    40,
    50
])

筛选:

复制代码
arr[arr > 30]

结果:

复制代码
[40 50]

这在数据清洗中极其重要。


十七、广播机制(Broadcasting)

NumPy最强大的功能之一。

python 复制代码
arr = np.array([
    [1,2,3],
    [4,5,6]
])

print(arr + 10)

输出:

复制代码
[[11 12 13]
 [14 15 16]]

无需循环。

自动扩展计算。


十八、常用机器学习技巧

数据归一化

python 复制代码
data = np.array([
    10,
    20,
    30,
    40
])

normalized = (
    data - data.min()
) / (
    data.max() - data.min()
)

标准化

python 复制代码
standardized = (
    data - data.mean()
) / data.std()

求协方差矩阵

复制代码
np.cov(data)

PCA经常使用。


十九、线性代数模块

求逆矩阵:

复制代码
np.linalg.inv(A)

求特征值:

复制代码
np.linalg.eig(A)

求行列式:

复制代码
np.linalg.det(A)

求矩阵秩:

复制代码
np.linalg.matrix_rank(A)

这些都是机器学习算法的重要基础。


二十、NumPy学习路线


二十一、总结

NumPy是Python数据科学生态的核心基础库。

掌握NumPy意味着掌握:

复制代码
数组操作

矩阵运算

统计分析

随机数生成

线性代数

机器学习中的:

复制代码
线性回归

逻辑回归

PCA

K-Means

神经网络

本质上都离不开NumPy。

对于数据科学工程师来说:

复制代码
NumPy

不是一个普通工具库

而是整个机器学习世界的基础设施

学好NumPy,后续学习 Pandas、Scikit-Learn、PyTorch、TensorFlow 都会轻松很多。

相关推荐
好好风格1 小时前
微软这个 14 万星工具,把 PDF、PPT、Excel 都变成大模型爱读的 Markdown
人工智能·python·开源
小糖学代码1 小时前
机器学习:2.线性回归
人工智能·机器学习·线性回归
装不满的克莱因瓶1 小时前
什么是正态分布与标准正态分布?从身高统计到机器学习全面理解
人工智能·深度学习·机器学习·ai·numpy
中科岩创1 小时前
恩施某旅游景区建筑物监测体系构建与应用
人工智能·物联网·自动化
小糖学代码1 小时前
机器学习:1.机器学习基本概念
人工智能·python·机器学习
hai3152475431 小时前
# FiveOS V5.0 交付(终极合成器版 · 物理合规修正)
人工智能·stm32·单片机·嵌入式硬件·神经网络
段一凡-华北理工大学1 小时前
工业领域的Hadoop架构学习~系列文章09:HBase列式数据库
数据库·人工智能·hadoop·架构·hbase·高炉炼铁·高炉炼铁智能化
踏着七彩祥云的小丑1 小时前
AI学习——FastAPI 接口封装
人工智能·ai