如何根据第一个和最后一个索引从4D数组中提取二维数组

时间:2016-01-13 19:03:11

标签: python numpy

我目前有一个形状(3, 890, 1100, 2)的numpy数组。我想提取位于(0, 0-890, 0-1100, 0)位置的二维数组,因此当索引890x11001为{时,我将留下值的4 2d数组{1}}。

换句话说,我想访问数组,好像参数的顺序是0,并执行以下操作:

(3, 2, 890, 1100)

我知道我可以用循环来做到这一点,但是想知道是否有更多的“python-esque”方法来做它。

2 个答案:

答案 0 :(得分:4)

是的,有一种更为pythonic的索引numpy数组的方法。有关详细信息,请查看documentation

在您的特定情况下,您可以按如下方式获得所需的结果。

# Generate some data
data = np.random.normal(size=(3, 890, 1100, 2))
# Slice the data
subset = data[0, :, :, 0]

:表示"沿此轴的所有元素"。

答案 1 :(得分:1)

如果您想使用NewArray[0][0]访问数据,还可以使用NewArray=np.rollaxis(OriginalArray,-1)

重新排列轴

然后

>>> NewArray.shape
(2,3,890,1100)