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

Nur*_*nov 1 python numpy

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

array = np.array([3, 2323, 212, 2321, 54])
padding = 1
array[padding:-padding]
Run Code Online (Sandbox Code Playgroud)

输出:

[2323, 12, 2321]
Run Code Online (Sandbox Code Playgroud)

但我希望以另一种方式做到这一点.我的数组将是50维的,我想将最后一行应用于数组的每个维度,但我不想编写太多代码.

也许是这样的

  array[padding: -padding for i in range(50)]
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

fug*_*ede 6

您可以slice直接生成相关的s;

array[array.ndim * [slice(1, -1)]]
Run Code Online (Sandbox Code Playgroud)

例如,

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

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