(Python - numpy)如何在没有循环的情况下调整大小和切片numpy数组?

时间:2016-02-28 06:42:28

标签: python arrays numpy

所以说我有这个2d numpy数组:

(
    [
        [1,2,3,4],
        [5,6,7,8],
        [9,8,7,6],
        [5,4,3,2]
    ]
);

我想对此进行子采样,并像这样得到2乘2(每隔一行和每隔一列索引):

(
    [
        [1,3],
        [9,7]
    ]
)

有没有办法在没有任何循环的情况下做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:2)

是的,您可以使用带有步骤的索引(在您的示例步骤中为2):

import numpy as np

a = np.array([[1,2,3,4], [5,6,7,8], [9,8,7,6], [5,4,3,2]])
a[::2, ::2]

返回

array([[1, 3],
       [9, 7]])

此处的语法为[dim1_start:dim1_stop:dim1_step, dim2_start:dim2_stop:dim2_step]