Python:将二维数组映射到更大的二维数组的一般规则

Python: general rule for mapping a 2D array onto a larger 2D array

假设您有一个 2D numpy 数组,您已对其进行切片以提取其核心,就像您从较大的框架中切出内部框架一样.

大框:

In[0]: import numpy
In[1]: a=numpy.array([[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14],[15,16,17,18,19]])
In[2]: a
Out[2]: 
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14],
       [15, 16, 17, 18, 19]]) 

内框:

In[3]: b=a[1:-1,1:-1]
Out[3]: 
array([[ 6,  7,  8],
       [11, 12, 13]])

我的问题:如果我想检索b中每个值在原始数组a中的位置,有没有比这个?

c=numpy.ravel(a) #This will flatten my values in a, so to have a sequential order
d=numpy.ravel(b) #Each element in b will tell me what its corresponding position in a was
y, x = np.ogrid[1:m-1, 1:n-1]
np.ravel_multi_index((y, x), (m, n))