【发布时间】:2017-02-02 14:40:55
【问题描述】:
假设您有一个 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]])
我的问题:如果我想在原始数组a中检索b中每个值的位置,有没有比这更好的方法?
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
【问题讨论】:
-
我不确定我是否理解您希望您的程序执行的操作。你想输出什么?您在问题结尾处的列表并没有真正计算
b元素在a中的位置,还是计算了但我只是看不到它? -
我的输出是一个一维数组或列表,其中包含
a的内框中的值的位置。 -
你得到的是作为扁平数组的 a 和 b 的元素。那么这些职位如何?它们可能类似于展平数组中的位置,但这只是因为您的元素是数字 0-19。据我了解,对于元素 6,位置类似于
[1, 1],而不是数字 6 本身。你能详细说明你认为元素的“位置”吗? -
如果职位直接引用
numpy.ravel(a)而不是a,我可以。