当前位置: 首页 > news >正文

【第2月 - day6】NumPy 基础知识讲解

以下是专为新手设计的 NumPy 基础入门指南,通过通俗易懂的语言和实际案例,带你快速掌握核心操作!


一、NumPy 是什么?

NumPy 是 Python 的 科学计算核心库,擅长处理多维数组(如矩阵)和数学运算,是数据分析、机器学习的必备工具。
👉 核心优势:比 Python 原生列表快 50 倍以上,且支持向量化运算(避免写循环)!


二、安装与导入

  1. 安装(已安装可跳过)
    打开终端(Terminal),输入:

    pip install numpy
    
  2. 导入库

    import numpy as np  # 约定俗成的缩写为 np
    

三、核心概念:数组(Array)

NumPy 的核心是 ndarray(N-dimensional array),即多维数组。

1. 创建数组
方法代码示例输出
从列表创建np.array([1, 2, 3])array([1, 2, 3])
全零数组np.zeros(3)array([0., 0., 0.])
全1数组np.ones((2, 3))2行3列的全1矩阵
等差数列np.arange(0, 10, 2)array([0, 2, 4, 6, 8])
随机数组(0~1)np.random.rand(2, 2)2x2的随机数矩阵
2. 数组属性
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)   # 形状:(2, 3) → 2行3列
print(arr.ndim)    # 维度:2 → 二维数组
print(arr.dtype)   # 数据类型:int32(自动推断)

四、数组操作(超实用!)

1. 索引与切片
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 获取单个元素(第2行第3列)
print(arr[1, 2])  # 输出:6

# 切片(前两行,所有列)
print(arr[:2, :])  # 输出:[[1 2 3], [4 5 6]]
2. 变形(Reshape)
arr = np.arange(12)
new_arr = arr.reshape(3, 4)  # 转为3行4列矩阵
3. 数学运算
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 向量化运算(无需循环)
print(a + b)  # 输出:[5 7 9]
print(a * 2)  # 输出:[2 4 6]
print(np.sum(a))  # 求和:6
4. 广播机制(Broadcasting)

当数组形状不同时,NumPy 会自动扩展较小数组的维度,使它们可运算:

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

print(a + b)  # 输出:
              # [[5, 6, 7],
              #  [6, 7, 8],
              #  [7, 8, 9]]

五、常用函数速查表

函数作用示例
np.max()找最大值np.max([1, 2, 3]) → 3
np.min()找最小值np.min([1, 2, 3]) → 1
np.mean()计算平均值np.mean([1, 2, 3]) → 2
np.dot(a, b)矩阵乘法(点积)np.dot([1,2], [3,4]) → 11
np.linspace(0,1,5)生成等间隔数组[0., 0.25, 0.5, 0.75, 1.]

六、新手常见问题

1. 如何判断是否是 NumPy 数组?
print(type(arr))  # 输出:<class 'numpy.ndarray'>
2. 为什么数组运算报错?

检查形状是否匹配:

a = np.array([1, 2])
b = np.array([[3], [4]])
print(a + b)  # 正确!广播机制生效 → 2x2矩阵
3. 如何保存/加载数组?
np.save('data.npy', arr)     # 保存
loaded_arr = np.load('data.npy')  # 加载

七、总结

  • NumPy 核心:数组操作 + 向量化运算。
  • 关键技能:创建数组、索引切片、变形、数学运算。
  • 下一步:学习 Pandas(数据分析)或 Matplotlib(绘图)!

练习任务:创建一个 5x5 的随机矩阵,计算每一列的平均值,并找到最大值所在的索引!

相关文章:

  • 最大异或对 The XOR Largest Pair
  • CSS 学习笔记 - 蓝桥杯重点整理
  • golang Error的一些坑
  • 解决Centos使用yum命令报错“Cannot find a valid baseurl for repo: base/7/x86_64”问题
  • c++(红黑树以及封装)
  • tradingview 2022版和2024版本的jsapi对接。
  • Java定时任务的三重境界:从单机心跳到分布式协调
  • UNIX网络编程笔记:基本TCP套接字编程
  • CSS平面转换
  • 万用表测MOS好坏
  • Java EE(13)——网络编程——UDP/TCP回显服务器
  • 本地生活服务APP开发,市场发展全新商业机遇
  • 【day1】数据结构刷题 链表
  • 运算符重载(关键字operator的使用)
  • 2025年3月AI搜索发展动态与趋势分析:从技术革新到生态重构
  • CUDA 学习(3)——CUDA 初步实践
  • 【Spring】Spring Task详解
  • DeepSeek-V3到DeepSeek-R1的演进
  • 如何在Visual Studio和 .NET 7中使用C#配置代理服务器进行网页抓取,并使用HtmlAgilityPack进行HTML解析
  • React学习笔记20
  • GDP逼近五千亿,向海图强,对接京津,沧州剑指沿海经济强市
  • 美国务卿鲁比奥将前往土耳其参加俄乌会谈
  • 俄副外长:俄美两国将举行双边谈判
  • 北京航空航天大学首个海外创新研究院落户巴西
  • 长沙通报一出租房疑存非法代孕:查封涉事场所,相关人员被控制
  • 季子文化与江南文化的根脉探寻与融合