1

假设我有一个 numpy 数组 A,它可以是任何维度 len(A.shape) 可以是 1、2、3 等。和一个相应的数组crop which len(crop) = len(A.shape) 我想使用crop 提取A 的内部值。这是二维数组的示例。

    A = np.random.rand(30).reshape([5,6])
    crop = np.array([1,2])

想要的输出:

    A[crop[0]:-crop[0], crop[1]:-crop[1])

假设裁剪值相对于 A 的大小是合理的。如何对数组 A 的任何维度执行此操作?

4

1 回答 1

3

slice这是符号的一种方式-

A[tuple([slice(i,-i,None) for i in crop])]

或者用简写np.s_-

A[tuple([np.s_[i:-i] for i in crop])]

如果为每个维度提供了开始和结束索引,我们可以执行类似中所示的操作Slicing NumPy array given start and end indices for generic dimensions

于 2019-09-20T09:18:08.043 回答