【发布时间】:2020-12-26 09:56:54
【问题描述】:
我正在尝试使用代码对 3D 数组进行切片,以便一次只查找 [0:,i,j]。例如,我有 arr 打印:
[[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]]
[[ 9 10 11]
[12 13 14]
[15 16 17]]]
如果我想要 [0:,0,0] 它会正确打印 [0,9]。如果我想要 [0:,0,1] = [1,10], [0:,0,2] = [2,11], [0:,1,0] = [3,12] 等等。所有手动完成时正确。但我希望这是自动化的,当我尝试以下代码时:
import numpy as np
arr = np.arange(18).reshape(2,3,3)
for k in arr:
for i in k:
for j in i:
print(arr[0:,i,j])
它给出了错误:IndexError: index 3 is out of bounds for axis 2 with size 3 帮忙?
【问题讨论】:
-
这不是 Numpy 的事情;这是 Python 基础知识。它也与切片或索引无关。您的误解与 for 循环的工作原理有关。
-
为了放大@KarlKnechtel 的评论,循环将元素,而不是变量中的索引。尝试打印
i和j而不是切片,它会很清晰。 -
你到底想做什么?你很少需要遍历一个 numpy 数组
-
谢谢你,@MarkMeyer!现在我明白我做错了什么!