切片 3d numpy 数组 - 误解
Slicing 3d numpy array - misunderstanding
我知道对于 3d numpy 数组我可以索引如下:
item = x[0,2,1]
或
item = x[0][2][1]
但是切片对我来说很奇怪:
item = x[:,:,1]
不等于:
item = x[:][:][1]
我错过了什么?
x[:]
将 return 完整数组,而不进行任何实际切片。按照这个逻辑,x[:][:]
.
也会如此
因此,x[:][:][1]
等同于 x[1]
。这就是为什么它与 x[:,:,1]
.
不同的原因
我喜欢@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)
我知道对于 3d numpy 数组我可以索引如下:
item = x[0,2,1]
或
item = x[0][2][1]
但是切片对我来说很奇怪:
item = x[:,:,1]
不等于:
item = x[:][:][1]
我错过了什么?
x[:]
将 return 完整数组,而不进行任何实际切片。按照这个逻辑,x[:][:]
.
因此,x[:][:][1]
等同于 x[1]
。这就是为什么它与 x[:,:,1]
.
我喜欢@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)