【初久】星雨☆星晨 2024-07-02 10:26 采纳率: 97.1%
浏览 4
已结题

Python多维数组的索引

img

  1. 对多维数组对应的坐标没有理解,没有空间想象力
  2. 每个维度一个索引值什么意思?
  3. 为什么a[1,2,3]对应23
  4. 为什么a[-1,2,-2]对应22,负数是什么意思
  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-07-02 10:26
    关注

    引自免费微信小程序:皆我百晓生

    好的,我会尽力帮助你理解多维数组的索引。首先,让我们从基础开始。

    问题解答

    1. 对多维数组对应的坐标没有理解,没有空间想象力

    多维数组可以想象成是多个一维数组的嵌套。例如,二维数组可以理解为一个表格,其中每个单元格都有一个坐标(行和列)。对于三维数组,可以想象为多个这样的二维数组堆叠在一起。例如,在你的例子中,有一个三维数组 a,形状为 (2, 3, 4),意味着它有2个二维数组堆叠在一起,每个二维数组有3行和4列。每一个数字都有一个三维坐标(类似于空间中的位置)。我们可以通过三个维度上的索引值来访问数组中的每一个元素。

    2. 每个维度一个索引值什么意思?

    每个维度的索引值就是用来确定你正在访问多维数组中的哪一个特定位置。例如,对于三维数组 a 的形状 (2, 3, 4),第一个维度有2个元素(索引为0和1),第二个维度有3个元素(索引为0、1和2),第三个维度有4个元素(索引为0、1、2和3)。所以当你写 a[1, 2, 3] 时,你是在说:“我想要获取第2个二维数组(索引为1)中的第3行(索引为2)的第4个元素(索引为3)”。这在内部其实是一个线性索引的计算过程。

    3. 为什么 a[1, 2, 3] 对应 23?

    因为 a 是一个形状为 (2, 3, 4) 的三维数组。当我们写 a[1] 时,我们是在获取第二个二维数组(因为Python的索引是从0开始的)。在这个二维数组中,a[1, 2] 表示获取第3行。在这个行中,a[1, 2, 3] 表示获取第4列的元素。由于数组的起始索引是0,因此索引为3的元素实际上是数组的第四个元素。根据你给的图,这个值是23。代码生成的完整数组结构如下:

    [[[ 0  1  2  3]
      [ 4  5  6  7]
      [ 8  9 10 11]]
    
     [[12 13 14 15]
      [16 17 18 19]
      [20 21 22 23]]]
    

    因此,a[1, 2, 3] 对应的是整个数组的第四个二维数组中第三行的第四个元素,即 a[1][2][3][[...]][...] 中的 23

    4. 为什么 a[-1, 2, -2] 对应 22?负数是什么意思?

    在Python的NumPy中,负数是用来从数组的末尾开始计数的特殊索引值。使用 -1 表示最后一个元素的前一个位置(在这个案例中即为最后一个二维数组的起始位置),-2 表示倒数第二个位置等。所以 a[-1, 2, -2] 表示的是最后一个二维数组的第3行倒数第2个元素。根据你给的图,这个值是最后一个二维数组的第三个元素的值(在原始的第三个维度上是第 -(-(-图的实际倒数第第值的位置的数字的数值会是特定的值) 个元素),即值 22`。因此负数的使用允许我们从数组的末尾反向定位到特定的元素。这样的操作特别在你不确定数组大小或者大小可能改变时很有用,因为它总是引用正确的位置而不受数组大小变化的影响。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 7月10日
  • 已采纳回答 7月2日
  • 创建了问题 7月2日