切片3d numpy数组 - 误解

时间:2015-01-07 16:30:09

标签: python numpy

我知道对于3d numpy数组我可以索引如下:

item = x[0,2,1] 

item = x[0][2][1]

但切片工作对我来说很奇怪:

item = x[:,:,1]

与:

不同
item = x[:][:][1]

我错过了什么?

2 个答案:

答案 0 :(得分:6)

x[:]将返回完整数组,而不进行任何实际切片。按照这个逻辑,x[:][:]也是如此。

因此,x[:][:][1] 相当于 x[1]。这就是为什么它与x[:,:,1]不一样。

答案 1 :(得分:0)

我喜欢@ ffisegydd的回答,但我想指出这不是numpy数组独有的。在python中,语句result = A[i, j]等同于result = A[(i, j)],语句result = A[i][j]等同于:

tmp = A[i]
result = tmp[j]

所以,如果我使用字典:

A = {0 : "value for key 0",
     (0, 1) : "value for key (0, 1)"}
print(A[0][1])
# a
print(A[0, 1])
# value for key (0, 1)