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

Numpy科学计算与数据分析:Numpy数组索引与切片入门

学习目标

本课程将深入探讨Numpy数组的索引和切片操作,帮助学员掌握如何高效地访问和修改数组中的元素。通过本课程的学习,学员将能够灵活运用Numpy的索引和切片功能,为数据处理和分析打下坚实的基础。

相关知识点

  • Numpy数组的索引与切片

学习内容

1 Numpy数组的索引与切片

1.1 基本索引

Numpy数组的基本索引与Python列表的索引方式非常相似,但Numpy提供了更多灵活的索引方式。基本索引允许使用指定数组的索引来访问单个元素或子数组。

1.1.1 一维数组的基本索引

对于一维数组,可以通过指定索引来访问单个元素。索引从0开始,负数索引表示从数组末尾开始计数。

import numpy as np# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])# 访问第一个元素
print(arr[0])  # 输出: 1# 访问最后一个元素
print(arr[-1])  # 输出: 5
1.1.2 多维数组的基本索引

对于多维数组,可以通过指定多个索引来访问特定的元素。每个维度的索引用逗号分隔。

import numpy as np
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 访问第一行第二列的元素
print(arr[0, 1])  # 输出: 2# 访问最后一行最后一列的元素
print(arr[-1, -1])  # 输出: 9

1.2 高级索引

Numpy的高级索引允许通过数组或列表来索引数组,从而实现更复杂的访问模式。高级索引返回的是数组的副本,而不是视图。

1.2.1 使用整数数组进行索引

现在可以使用一个整数数组来索引另一个数组,从而获取多个元素。

import numpy as np
# 创建一个一维数组
arr = np.array([10, 20, 30, 40, 50])# 使用整数数组进行索引
indices = np.array([0, 2, 4])
print(arr[indices])  # 输出: [10 30 50]
1.2.2 使用布尔数组进行索引

还可以使用布尔数组来索引数组,布尔数组中的True表示要选择的元素。

import numpy as np
# 创建一个一维数组
arr = np.array([10, 20, 30, 40, 50])# 创建一个布尔数组
mask = np.array([True, False, True, False, True])# 使用布尔数组进行索引
print(arr[mask])  # 输出: [10 30 50]

1.3 切片操作

Numpy数组的切片操作允许人们访问数组的一部分,而不仅仅是单个元素。切片操作返回的是数组的视图,而不是副本。

1.3.1 一维数组的切片

对于一维数组,可以使用切片语法来访问数组的一部分。

import numpy as np
# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])# 获取前5个元素
print(arr[:5])  # 输出: [1 2 3 4 5]# 获取第3个到第7个元素
print(arr[2:7])  # 输出: [3 4 5 6 7]# 获取每隔2个元素
print(arr[::2])  # 输出: [1 3 5 7 9]
1.3.2 多维数组的切片

对于多维数组,可以使用多个切片来访问特定的子数组。

import numpy as np
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 获取第一行的所有元素
print(arr[0, :])  # 输出: [1 2 3]# 获取所有行的第二列元素
print(arr[:, 1])  # 输出: [2 5 8]# 获取前两行的前两列元素
print(arr[:2, :2])  # 输出: [[1 2]#        [4 5]]
1.4 综合练习

为了巩固所学知识,现在来完成一个综合练习。假设有一个二维数组,现在需要完成以下任务:

  1. 获取第一行的所有元素。
  2. 获取所有行的第二列元素。
  3. 获取前两行的前两列元素。
  4. 使用布尔数组选择所有大于5的元素。
# 创建一个二维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 1. 获取第一行的所有元素
first_row = arr[0, :]
print("第一行的所有元素:", first_row)  # 输出: [1 2 3]# 2. 获取所有行的第二列元素
second_column = arr[:, 1]
print("所有行的第二列元素:", second_column)  # 输出: [2 5 8]# 3. 获取前两行的前两列元素
sub_array = arr[:2, :2]
print("前两行的前两列元素:", sub_array)  # 输出: [[1 2]#        [4 5]]# 4. 使用布尔数组选择所有大于5的元素
mask = arr > 5
selected_elements = arr[mask]
print("所有大于5的元素:", selected_elements)  # 输出: [6 7 8 9]

通过本课程的学习,学员将能够熟练掌握Numpy数组的索引和切片操作,为后续的数据处理和分析打下坚实的基础。

http://www.lryc.cn/news/612997.html

相关文章:

  • 【论坛系统自动化功能测试报告】
  • 动手学深度学习(pytorch版):第一节——引言
  • 具身智能机器人 - Reachy Mini
  • MyCAT实战环节
  • 考研复习-计算机组成原理-第三章-存储系统
  • 微服务平台需求-部署一体化文档V1.0
  • cv2.threshold cv2.morphologyEx
  • Ubuntu 25.04 安装 pyenv 并配置多个 python 版本
  • Java并发与数据库锁机制:悲观锁、乐观锁、隐式锁与显式锁
  • 构建一个简洁优雅的 PHP 参数验证器 —— php-schema-validator
  • 金仓KingbaseES逻辑架构,与Oracle/MySQL对比
  • Python实现点云随机一致性(RANSAC)配准——粗配准
  • (Python)Python爬虫入门教程:从零开始学习网页抓取(爬虫教学)(Python教学)
  • 利用vue.js2X写前端搜索页面,express写后端API接口展现搜索数据
  • python数据结构与算法(基础)
  • DrissionPage自动化:高效Web操作新选择
  • 怎么在本地引入字体
  • 深入解析嵌套事务:原理与应用
  • 基于langchain的两个实际应用:[MCP多服务器聊天系统]和[解析PDF文档的RAG问答]
  • HTTP 协议升级(HTTP Upgrade)机制
  • 自动驾驶控制算法——滑模控制(SMC)原理与建模
  • TCP 如何保证可靠性
  • FluentUI-main的详解
  • 多账号管理方案:解析一款免Root的App分身工具
  • B-树与B+树
  • 动力电池点焊机:效率质量双提升,驱动新能源制造升级
  • Dify 从入门到精通(第 20/100 篇):Dify 的自动化测试与 CI/CD
  • Oracle exp imp expdp impdp 命令详解
  • PCB制造中压接孔、插接孔、沉头孔、台阶孔的区别及生产流程
  • 《C语言》函数练习题--1