【发布时间】:2021-11-25 12:48:41
【问题描述】:
我有一个 (2 x 1 x 2 x 2 x 2) 维数组:
array([[[[[ 7., 9.],
[10., 11.]],
[[19., 18.],
[20., 16.]]]],
[[[[24., 5.],
[ 6., 10.]],
[[18., 11.],
[45., 12.]]]]])
最后两个维度分别是H(高度)和W(宽度)。现在我有两个单独的数组,索引沿 H 和 W:
idx2=np.array([1, 1, 0, 1]) # index along H
idx3=np.array([1, 0, 0, 0]) # index along W
因此,就最后两个维度而言,我想从[[ 7.,9.],[10.,11.]]中提取第(1,1)个元素,即11;以及来自[[19.,18.],[20.,16.]] 的第 (1,0) 个元素,即 20,依此类推。最终结果应该是一个(2 x 1 x 2)数组:
array([[[11., 20.]],
[[24., 45.]]])
感谢您的帮助!
【问题讨论】:
-
为什么第三个数字是
24.而不是10.? -
因为它是来自
[[24., 5.], [ 6., 10.]]的第 (0,0) 个,即 24。同样,最后一个 45 是 [[18., 11.] 的第 (1,0) 个,[ 45., 12.]] -
我假设这个数组是用
as_strided生成的,就像你之前的问题一样。如果是这样,则数组是view。但是大多数高级索引形式都会创建一个副本,并“断开”到原始索引的链接。这同样适用于任何重塑。