我创建了一个名为'd'的numpy数组,然后将其重塑为'd1',如下所示:-
d=np.arange(32)
d1=d.reshape(2,2,2,4)
numpy数组'd1'看起来像:-
[[[[ 0 1 2 3]
[ 4 5 6 7]]
[[ 8 9 10 11]
[12 13 14 15]]]
[[[16 17 18 19]
[20 21 22 23]]
[[24 25 26 27]
[28 29 30 31]]]]
我想切片和提取这个数组,以便得到两个1-D数组如下:-
[[13 14]
[17 18]]
我是新手,刚开始2天。我能做一些基本的东西与索引和切片。然而,这个问题让我困惑了好几个小时。任何帮助都将非常感激。谢谢你的问候。
如果您的选择是任意的,并且您只是想要一种获得[[13, 14], [17, 18]]
的方法。那么,这里有一个可能的解决方案:
-
首先将nd-array重塑为2D数组
>>> d.reshape(8, 4) array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11], [12, 13, 14, 15], [16, 17, 18, 19], [20, 21, 22, 23], [24, 25, 26, 27], [28, 29, 30, 31]])
-
沿着剩余的两个轴正确切片:
>>> d.reshape(8, 4)[3:5, 1:3] array([[13, 14], [17, 18]])
或者,您可以将索引分解为d
形状并使用这些索引来索引数组:
>>> idx = np.unravel_index([13, 14, 17, 18], d.shape)
(array([0, 0, 1, 1]),
array([1, 1, 0, 0]),
array([1, 1, 0, 0]),
array([1, 2, 1, 2]))
>>> d[idx]
array([13, 14, 17, 18])