尝试理解numpy在超过2个维度的索引时如何选择元素。
import numpy as np
x = np.arange(24).reshape(2,3,4)
x[:,:,0].shape #(2, 3)
在编写x[:,:,0]
时,我选择了"深度"中的所有元素,所有"行"和第一列。当我在视觉上思考这个时,我会认为numpy会返回一个形状为(2,3,1)的东西,但最后的尺寸会被丢弃。这是合理的,但numpy如何填充结果?即在这个例子中,为什么x[:,:,0]
导致元素[0,12]形成第一列。试图弄清楚由于某种原因我目前无法理解的一般逻辑。
答案 0 :(得分:1)
一般NumPy索引很复杂,但这仍然很容易。我一直认为,根据索引结果如何对索引原始数组进行思考会有所帮助。
x[:, :, 0]
的结果是一个数组,对于任何索引i
和j
,
result[i, j] == x[i, j, 0]
同样,如果您将5D数组a
索引为a[:, 1, :, 2, :]
,结果就是
result[i, j, k] == a[i, 1, j, 2, k]