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

NumPy数组行列元素提取错误,求正确提取指定元素的方法

解决Numpy数组索引错误的问题

首先,咱们先明确你创建的数组到底是什么样的——运行你给出的代码后,data的实际内容是:

import numpy as np
data = np.arange(35).reshape(7,5)
print(data)

输出结果:

[[ 0  1  2  3  4]
 [ 5  6  7  8  9]
 [10 11 12 13 14]
 [15 16 17 18 19]
 [20 21 22 23 24]
 [25 26 27 28 29]
 [30 31 32 33 34]]

你用data[-3:, -2:]得到的结果是符合索引规则的,但不符合你红色标记的区域,问题出在你对Numpy索引范围的选择上:

  • -3: 是取数组的最后3行(对应上面的第5、6、7行)
  • -2: 是取数组的最后2列(对应上面的第4、5列)

根据常见的使用场景,我给你几种可能的正确索引方式,你可以对应红色标记区域选择:

情况1:红色标记是中间3行(第3-5行)的最后2列

用这个代码:

result = data[2:5, -2:]

输出结果:

[[13 14]
 [18 19]
 [23 24]]

情况2:红色标记是前3行的最后2列

用这个代码:

result = data[:3, -2:]

输出结果:

[[ 3  4]
 [ 8  9]
 [13 14]]

情况3:红色标记是最后3行的前2列

用这个代码:

result = data[-3:, :2]

输出结果:

[[20 21]
 [25 26]
 [30 31]]

另外给你补个小知识点,避免以后再踩索引的坑:

  • Numpy的索引格式是data[行范围, 列范围],行在前,列在后
  • 冒号:的用法:
    • a:b:取从索引a(包含)到b(不包含)的元素
    • :b:从开头取到索引b(不包含)
    • a::从索引a(包含)取到末尾
    • -n::从倒数第n个元素取到末尾
    • :-n:从开头取到倒数第n个元素(不包含)

如果红色标记的区域不在上面这几种里,可以告诉我具体包含哪些元素,我再帮你调整索引~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:56:31