Python-numpy-索引与切片
NumPy 索引与切片NumPy 提供了比 Python list 强大得多的索引能力基本索引、切片、花式索引Fancy Indexing、布尔索引。 基本索引与切片一维数组importnumpyasnp arrnp.array([10,20,30,40,50,60])# 基本索引print(arr[0])# 10print(arr[-1])# 60倒数第一print(arr[-2])# 50# 切片返回视图非副本print(arr[1:4])# [20 30 40]print(arr[:3])# [10 20 30]前 3 个print(arr[3:])# [40 50 60]从第 3 个到最后print(arr[::2])# [10 30 50]步长 2print(arr[::-1])# [60 50 40 30 20 10]反转# 切片赋值会修改原数组arr[1:4]99print(arr)# [10 99 99 99 50 60]二维数组matnp.arange(12).reshape(3,4)print(mat)# [[ 0 1 2 3]# [ 4 5 6 7]# [ 8 9 10 11]]# 单个元素print(mat[0,0])# 0print(mat[2,-1])# 11# 整行 / 整列print(mat[1])# [4 5 6 7]第 1 行print(mat[1,:])# 同上print(mat[:,2])# [ 2 6 10]第 2 列# 子矩阵切片print(mat[0:2,1:3])# [[1 2]# [5 6]]# 步长切片print(mat[::2,::2])# 每隔一行、每隔一列# [[ 0 2]# [ 8 10]]# 行 列混合print(mat[0,:2])# [0 1]第 0 行前 2 列print(mat[:2,-1])# [3 7]前 2 行最后 1 列三维及以上tensornp.arange(24).reshape(2,3,4)# shape: (2, 3, 4) — 2 个矩阵每个 3×4print(tensor[0])# 第一个 3×4 矩阵print(tensor[0,1])# 第一个矩阵的第 1 行 → (4,)print(tensor[0,1,2])# 标量 → 6print(tensor[:,0,:])# 每个矩阵的第 0 行 → (2, 4)print(tensor[:,:,::2])# 每矩阵每隔一列 → (2, 3, 2)...Ellipsis省略号arrnp.arange(120).reshape(2,3,4,5)# 等价写法print(arr[0,:,:,:])# 完整写法print(arr[0,...])# 用 ... 代替中间的 :print(arr[...,2])# 最后一个维度的第 2 索引 → (2, 3, 4)print(arr[0,...,:3])# 第一个块最后维取前 3 → (3, 4, 3) 花式索引Fancy Indexing用整数数组来索引返回副本非视图。一维花式索引arrnp.array([10,20,30,40,50])# 用列表指定索引print(arr[[0,2,4]])# [10 30 50]# 可以用任意整数数组indicesnp.array([4,1,1,3])print(arr[indices])# [50 20 20 40]# 可以任意顺序、重复print(arr[[4,4,4,0,0]])# [50 50 50 10 10]二维花式索引matnp.arange(12).reshape(3,4)# 指定行索引print(mat[[0,2]])# 第 0 行和第 2 行# [[ 0 1 2 3]# [ 8 9 10 11]]# 指定行 列索引print(mat[[0,2,1],[0,3,1]])# 取 (0,0), (2,3), (1,1) → [0 11 5]# ix_: 取行和列的笛卡尔积子矩阵print(mat[np.ix_([0,2],[1,3])])# [[ 1 3]# [ 9 11]]# ix_ 等价于 mat[[0,2]][:, [1,3]]花式索引 vs 切片matnp.arange(12).reshape(3,4)# 切片返回视图viewmat[:2,:2]view[0,0]99print(mat[0,0])# 99 ← 原数组被修改了# 花式索引返回副本copymat[[0,1]][:,[0,1]]copy[0,0]999print(mat[0,0])# 99 ← 原数组未修改 布尔索引 ⭐arrnp.array([15,3,8,22,1,9,13])# 条件直接筛选print(arr[arr10])# [15 22 13]# 多条件用 | ~必须加括号print(arr[(arr5)(arr20)])# [15 8 9 13]print(arr[(arr5)|(arr20)])# [3 22 1]print(arr[~(arr10)])# [3 8 1 9]# ⚠️ 常见错误用 and/or 或不加括号# arr[arr 5 and arr 20] ← 报错# arr[arr 5 arr 20] ← 结果错误 优先级高# arr[(arr 5) (arr 20)] ← 正确二维布尔索引matnp.arange(12).reshape(3,4)# 按条件筛选行print(mat[mat[:,0]3])# 第 0 列 3 的行# [[ 4 5 6 7]# [ 8 9 10 11]]# 整体条件maskmat5print(mat[mask])# [6 7 8 9 10 11]返回一维数组布尔掩码赋值arrnp.array([15,3,8,22,1,9,13])arr[arr10]0# 所有 10 的变 0print(arr)# [0 3 8 0 1 9 0]arr[arr5]-1# 所有 5 的变 -1print(arr)# [-1 -1 8 0 -1 9 -1]np.where()— 条件索引三剑客条件替换三元运算arrnp.array([15,3,8,22,1,9,13])# where(条件, True时的值, False时的值)resultnp.where(arr10,1,0)print(result)# [1 0 0 1 0 0 1]resultnp.where(arr10,arr,-arr)print(result)# [ 1 -3 -8 1 -1 -9 1]条件查找返回索引arrnp.array([15,3,8,22,1,9,13])# 找到满足条件的索引indicesnp.where(arr10)print(indices)# (array([0, 3, 6]),) ← 返回元组print(indices[0])# [0 3 6]一维时print(arr[indices])# [15 22 13]# 二维matnp.arange(12).reshape(3,4)rows,colsnp.where(mat5)print(rows)# [1 1 2 2 2 2] — 行索引print(cols)# [2 3 0 1 2 3] — 列索引print(mat[rows,cols])# [6 7 8 9 10 11] — 值多条件组合# np.where 也可以处理多条件arrnp.arange(10)resultnp.where((arr3)(arr8),arr*10,arr)print(result)# [0 1 2 3 40 50 60 70 8 9]np.argwhere()— 获取非零/True 索引arrnp.array([0,5,0,3,0,8,0])print(np.argwhere(arr0))# [[1]# [3]# [5]]# 和 where 的区别argwhere 返回 (N, ndim) 数组where 返回元组np.take()/np.put()— 按索引取值/设值arrnp.array([10,20,30,40,50])# take: 按索引取值print(arr.take([0,2,4]))# [10 30 50]print(np.take(arr,[4,3,3]))# [50 40 40]# 二维按轴取matnp.arange(12).reshape(3,4)print(np.take(mat,[0,2],axis0))# 取第 0、2 行print(np.take(mat,[0,2],axis1))# 取第 0、2 列# put: 按索引设值原地修改arrnp.array([10,20,30,40,50])np.put(arr,[0,2],[99,88])print(arr)# [99 20 88 40 50]np.select()/np.clip()— 多条件/裁剪# select: 多条件多选择arrnp.array([15,3,8,22,1,9,13])conditions[arr5,arr15,True]# True 兜底choices[-1,1,0]resultnp.select(conditions,choices)print(result)# [0 -1 0 1 -1 0 0]# clip: 限制在范围内print(np.clip(arr,5,15))# [15 5 8 15 5 9 13]print(arr.clip(5,15))# 同上方法形式 多维索引技巧按行列号取值matnp.arange(12).reshape(3,4)# 提取对角线print(np.diag(mat))# [0 5 10]print(np.diag(mat,k1))# [1 6 11]上对角线# 提取上三角 / 下三角print(np.triu(mat))# 上三角含对角线print(np.tril(mat,k-1))# 下三角不含对角线# 索引数组组合row_indicesnp.array([0,1,2])col_indicesnp.array([3,2,1])print(mat[row_indices,col_indices])# [3 6 9] — 取 (0,3),(1,2),(2,1)按轴索引take_along_axismatnp.arange(12).reshape(3,4)# 取每行最大值的索引对应的列col_idxmat.argmax(axis1)# [3 3 3]resultnp.take_along_axis(mat,col_idx[:,None],axis1)print(result)# [[3] [7] [11]] 速查表需求代码单个元素arr[0, 1]/arr[-1]整行/列arr[1, :]/arr[:, 2]子矩阵arr[0:2, 1:3]步长切片arr[::2, ::3]反转arr[::-1]省略号arr[0, ..., :3]花式行索引arr[[0, 2, 4]]笛卡尔积索引arr[np.ix_([0,2], [1,3])]布尔筛选arr[arr 10]多条件arr[(a3) (a10)]条件替换np.where(arr 0, 1, -1)条件查找np.where(arr 0)列表取值np.take(arr, [0, 2])多条件选择np.select(conds, choices)裁剪np.clip(arr, lo, hi)[[numpy-总览|← 返回总览]]

相关新闻

Demeteorizer转换原理深度剖析:从meteor build到Node.js应用的幕后过程

Demeteorizer转换原理深度剖析:从meteor build到Node.js应用的幕后过程

Demeteorizer转换原理深度剖析:从meteor build到Node.js应用的幕后过程 【免费下载链接】demeteorizer Converts a Meteor app into a standard Node.js application. 项目地址: https://gitcode.com/gh_mirrors/de/demeteorizer Demeteorizer是一款强大的工…

2026/7/29 23:09:52 阅读更多 →
Apicurio Registry与Iceberg:数据湖Schema管理的终极指南

Apicurio Registry与Iceberg:数据湖Schema管理的终极指南

Apicurio Registry与Iceberg:数据湖Schema管理的终极指南 【免费下载链接】apicurio-registry An API/Schema registry - stores APIs and Schemas. 项目地址: https://gitcode.com/GitHub_Trending/ap/apicurio-registry Apicurio Registry是一个功能强大的…

2026/7/29 23:09:52 阅读更多 →
Java 23 种设计模式:从踩坑到精通 | 番外:外观模式 —— 物流订单处理实战

Java 23 种设计模式:从踩坑到精通 | 番外:外观模式 —— 物流订单处理实战

Java 23 种设计模式:从踩坑到精通 | 番外:外观模式 —— 物流订单处理实战 摘要:外观模式为子系统中的一组接口提供一个统一的高层接口,让客户端只需一键操作即可完成原本需要多次调用的复杂流程。本文结合**智能物流中“订单处理…

2026/7/29 23:09:52 阅读更多 →

最新新闻

2023最新SvelteKit博客方案:swyxkit从安装到部署完整教程

2023最新SvelteKit博客方案:swyxkit从安装到部署完整教程

2023最新SvelteKit博客方案:swyxkit从安装到部署完整教程 【免费下载链接】swyxkit An opinionated blog starter for SvelteKit Tailwind Netlify. Refreshed for SvelteKit 1.0! 项目地址: https://gitcode.com/gh_mirrors/sw/swyxkit swyxkit是一个基于…

2026/7/29 23:16:55 阅读更多 →
Notchi本地化教程:如何添加新语言支持与区域适配

Notchi本地化教程:如何添加新语言支持与区域适配

Notchi本地化教程:如何添加新语言支持与区域适配 【免费下载链接】notchi notch app for claude code & codex 项目地址: https://gitcode.com/gh_mirrors/no/notchi Notchi是一款为Claude Code和Codex打造的Notch应用,通过本教程&#xff0c…

2026/7/29 23:16:54 阅读更多 →
Sunshine游戏串流终极指南:5步打造你的家庭游戏中心

Sunshine游戏串流终极指南:5步打造你的家庭游戏中心

Sunshine游戏串流终极指南:5步打造你的家庭游戏中心 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源自托管的游戏串流服务器,专为Moonli…

2026/7/29 23:15:54 阅读更多 →
如何高效清理Windows驱动冗余:Driver Store Explorer实用指南

如何高效清理Windows驱动冗余:Driver Store Explorer实用指南

如何高效清理Windows驱动冗余:Driver Store Explorer实用指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾因为C盘空间不足而烦恼?Windows系统驱动管…

2026/7/29 23:15:54 阅读更多 →
SPARTA与JUCE框架:构建专业空间音频插件的技术揭秘

SPARTA与JUCE框架:构建专业空间音频插件的技术揭秘

SPARTA与JUCE框架:构建专业空间音频插件的技术揭秘 【免费下载链接】SPARTA A collection of spatial audio plug-ins developed using JUCE and the Spatial_Audio_Framework 项目地址: https://gitcode.com/gh_mirrors/sparta2/SPARTA SPARTA是一套开源的空…

2026/7/29 23:15:54 阅读更多 →
Python-numpy-基础入门

Python-numpy-基础入门

NumPy 基础入门:ndarray 🧮 什么是 ndarray? ndarray(N-dimensional Array)是 NumPy 的核心数据结构——一个同构多维数组。所有元素类型相同,内存连续存储,因此比 Python list 快 10~100 倍。对…

2026/7/29 23:15:54 阅读更多 →

日新闻

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:00:23 阅读更多 →
AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础

AI编程系列02:合并知识功能,给 AI 问数和 RAG 场景打基础 在上一期「AI编程系列」中,我们学习了如何构建一个基础的 AI 问答系统,通过简单的输入输出让模型回应问题。但现实世界中的 AI 应用往往需要处理更复杂的场景:…

2026/7/29 0:00:23 阅读更多 →
AI智能体开发实战:从工具调用到企业级部署

AI智能体开发实战:从工具调用到企业级部署

1. 从被动问答到主动执行:AI Agent的范式转变过去两年,大语言模型最显著的应用形态是聊天机器人——用户提问,AI回答。但真正的生产力革命发生在2023年下半年:当AI学会主动调用工具完成任务时,生产力工具的历史被彻底改…

2026/7/29 0:00:23 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻