You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么对二维numpy数组执行array[array%10]索引会返回三维数组?

Numpy高级索引逻辑说明

1. array[array>0]返回一维数组的底层逻辑

array>0会生成一个和原数组形状完全一致的布尔数组(本例中为(10,10)形状),所有元素值为True或False。
Numpy的布尔索引规则为:提取所有布尔值为True的位置对应的原数组元素,按行优先(C顺序)拉平为一维数组返回。本例中原数组元素范围是1~100,所有元素都满足>0的条件,因此最终返回包含全部100个元素的一维数组。

2. array[array%10]返回三维数组的底层逻辑

array%10会生成一个和原数组形状一致的整数数组(本例中为(10,10)形状),每个元素的取值范围是0~9,刚好是原数组第0轴(行维度,长度为10)的合法下标。
Numpy的整数数组索引规则为:当传入一个N维整数数组作为索引时,会将索引数组的每个元素值作为原数组第0轴的下标取值,返回结果的形状为「索引数组的形状 + 原数组被索引维度之后剩余维度的形状」。
本例中索引数组形状为(10,10),原数组被索引的第0轴之后还剩长度为10的列维度,因此最终返回的数组形状为(10,10) + (10,) = (10,10,10),也就是三维数组。

补充:如果你的需求是对原数组每个元素做取模10的计算,直接执行array%10即可,不需要在外层套array[]索引。

内容的提问来源于stack exchange,提问作者user245699

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 08:36:04