以编程方式在Numpy中沿其所有轴裁剪数组

时间:2018-08-08 17:23:26

标签: python numpy

我想(均匀地)减小每个方向上的numpy数组(矩阵)的尺寸。下面的代码有效。

array = np.array([3, 2323, 212, 2321, 54])
padding = 1
array[padding:-padding]

输出

[2323, 12, 2321]

但是我希望这可以通过另一种方式完成。我的数组将是50维的,我想将最后一行应用于数组的每个维,但是我不想写太多代码。

也许像

  array[padding: -padding for i in range(50)]

但这不起作用。

1 个答案:

答案 0 :(得分:6)

您可以直接产生相关的slice

array[array.ndim * [slice(1, -1)]]

例如,

In [31]: array = np.zeros((3, 4, 5, 6))

In [32]: array[array.ndim * [slice(1, -1)]].shape
Out[32]: (1, 2, 3, 4)