假设我有一个 numpy 数组 A,它可以是任意维度 len(A.shape) 可以是 1,2,3,..etc。和相应的数组 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])
假设 crop 的值相对于 A 的大小是合理的。我如何对数组 A 的任何维度执行此操作?
最佳答案
这是 slice
notation 的一种方式-
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
中所示的操作.
关于 python / NumPy : How to extract interior of any dimension of numpy array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58025347/