0

0

NumPy多维切片怎么用_逗号分隔各个维度索引(arr[0:2, 1:3])

P粉602998670

P粉602998670

发布时间:2026-03-13 13:39:10

|

655人浏览过

|

来源于php中文网

原创

arr[0:2, 1:3] 表示在第0维(行)取索引0到1、第1维(列)取索引1到2,各维度切片独立作用于对应shape维度,非线性流程。

numpy多维切片怎么用_逗号分隔各个维度索引(arr[0:2, 1:3])

arr[0:2, 1:3] 这种写法到底在切什么

它不是“先切行再切列”的线性流程,而是**每个逗号分隔的索引项独立作用于对应维度**。比如 arr[0:2, 1:3] 中,0:2 作用于第 0 维(通常是行),1:3 作用于第 1 维(通常是列),如果是三维数组,arr[1, :, 2:5] 就表示:第 0 维取索引 1、第 1 维全取、第 2 维取 2~4。

  • 维度顺序永远和 arr.shape 一致,别凭“行/列”直觉猜 —— arr.shape(2, 3, 4),那 arr[i, j, k] 就分别对应这三维
  • 省略某个维度用 :,不是空字符串或 Nonearr[:, 0] 合法,arr[, 0] 直接报 SyntaxError
  • 负索引和步长都支持:arr[-2:, ::2] 表示最后两行、所有列中每隔一列取一个

切片边界超出时不会报错,但结果可能不是你想要的

NumPy 对越界切片很宽容:下界超了就当 0,上界超了就当该维长度,空范围(如 5:3)直接返回空数组。这容易掩盖逻辑错误。

  • arr[10:15, 0:2] 在只有 3 行的数组上,等价于 arr[3:3, 0:2] → 返回 shape 为 (0, 2) 的空数组,不是报错
  • 调试时别只看形状,用 arr[10:15, 0:2].size 检查是否真有数据
  • 如果业务上不允许越界,得自己加判断:if start arr.shape[0]: raise ValueError(...)

布尔索引和整数索引混用时,逗号行为会变

一旦某维用了布尔数组或整数列表,NumPy 就切换到**高级索引模式**,此时逗号不再只是分隔维度,还触发广播和副本生成 —— 结果不再是原数组的视图,且维度顺序可能重组。

Nanonets
Nanonets

基于AI的自学习OCR文档处理,自动捕获文档数据

下载
  • arr[[0, 2], [1, 3]] 返回一维数组(两个点的值),不是二维子块
  • arr[[True, False, True], 1:3] 返回 shape (2, 2),但它是副本,修改不影响原数组
  • 想保持视图 + 多维切片,就别在同一个 [] 里混用布尔/整数索引和切片;拆成两步:arr[bool_mask][..., 1:3] 或先切片再布尔筛选

性能陷阱:连续切片 vs 非连续索引

纯切片(:start:stopstart:stop:step)几乎零拷贝,返回原内存的视图;只要夹杂一个列表或布尔数组,就会强制拷贝整个选中区域。

  • arr[::2, ::2] 快,内存共享,适合大数组预处理
  • arr[[0, 2, 4], :] 慢,即使只取三行,也会把这三行完整复制出来
  • 高频访问场景下,用 np.takenp.compress 替代布尔索引有时能省一点开销,但优先保证逻辑清晰

多维切片真正的复杂点不在语法,而在于你是否清楚当前操作产生的是视图还是副本、维度顺序是否和 shape 严格对齐、以及混合索引时 NumPy 自动切换的模式。这些不显式报错,却会在后续计算中悄悄改变内存行为或结果形状。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

847

2023.08.22

php中三维数组怎样求和
php中三维数组怎样求和

php中三维数组求和的方法:1、创建一个php示例文件;2、定义一个名为“$total”的变量,用于记录累加的结果。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

96

2024.02.23

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1567

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

651

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1228

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1204

2024.04.29

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号