最近,我遇到了一个代码段。请向我解释它正在工作。
arr = np.arange(9).reshape(3,3)
a1 = np.array([[1,2],[0,1]])
a2 = np.array([[0,2],[1,2]])
#please explain this line
out = arr[a1,a2]
print(out.sum())
答案 0 :(得分:1)
请注意
arr = [[0 1 2]
[3 4 5]
[6 7 8]]
arr[a1, a2] = [ [arr[a1[0,0], a2[0,0]] arr[a1[0,1], a2[0,1]]] ]
[arr[a1[1,0], a2[1,0]] arr[a1[1,1], a2[1,1]]] ]
= [ [arr[1,0] arr[2,2]] ]
[arr[0,1] arr[1,2]] ]
out = [[3 8]
[1 5]]
答案 1 :(得分:0)
第一项:
arr[i,:]
选择第i行和所有列。
arr[:,i]
选择第i列和所有行。
arr[i,j]
选择第i行和第j列。
假设i
或j
是向量-例如以i = [[a,b]]
为例。现在,arr[i,:] = arr[[a,b],:]
将选择第a行和第b行。
所以,如果:
arr = [[0 1 2],
[3 4 5],
[6 7 8]]
a1 = [[1,2],
[0,1]]
a2 = [[0,2],
[1,2]]
您可以通过以下方式想到arr[a1,a2]
:
3
8
1
5