使用2D数组的Numpy fancy索引-说明
我刚刚使用过numpy,现在正在(重新)积累我的numpy知识。 我有一个关于多维(在本例中是2D)数组的奇特索引的问题 给出以下代码段:使用2D数组的Numpy fancy索引-说明,numpy,Numpy,我刚刚使用过numpy,现在正在(重新)积累我的numpy知识。 我有一个关于多维(在本例中是2D)数组的奇特索引的问题 给出以下代码段: >>> a = np.arange(12).reshape(3,4) >>> a array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> i = np.array( [ [0,1],
>>> a = np.arange(12).reshape(3,4)
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]])
>>> i = np.array( [ [0,1], # indices for the first dim of a
... [1,2] ] )
>>> j = np.array( [ [2,1], # indices for the second dim
... [3,3] ] )
>>>
>>> a[i,j] # i and j must have equal shape
array([[ 2, 5],
[ 7, 11]])
有人能用简单的英语解释一下给出结果的逻辑吗。理想情况下,该解释适用于用于索引数组的3D和更高秩数组
从概念上讲(根据对“行”和“列”的限制),使用2D数组进行索引意味着什么
从概念上讲(根据对“行”和“列”的限制),使用2D数组进行索引意味着什么
这意味着您正在构造一个二维数组R,这样R=a[B,C]
。这意味着rij=abijcij的值
因此,这意味着位于R[0,0]
的项目是A
中的项目,具有行索引B[0,0]
和列索引C[0,0]
。项目R[0,1]
是A
中的项目,行索引为B[0,1]
,列索引为C[0,1]
,等等
因此,在这个具体案例中:
>>> b = a[i,j]
>>> b
array([[ 2, 5],
[ 7, 11]])
b[0,0]=2
因为i[0,0]=0
,而j[0,0]=2
,因此a[0,2]=2
b[0,1]=5
因为i[0,0]=1
,而j[0,0]=1
,因此a[1,1]=5
b[1,0]=7
因为i[0,0]=1
,而j[0,0]=3
,因此a[1,3]=7
b[1,1]=11
因为i[0,0]=2
,而j[0,0]=3
,因此a[2,3]=11
因此可以说,
i
将确定“行索引”,而j
将确定“列索引”。当然,这个概念也适用于更多维度:因此第一个“索引器”确定第一个索引中的索引,第二个“索引器”确定第二个索引中的索引,依此类推。您构建一个二维数组,其中[0,0]
处的元素位于[0,2]
(该项的i
mj
值)等。使用R的公式进行了很好的解释。