numpy中arr [arr1,arr2]的工作是什么

时间:2019-12-27 08:51:51

标签: python numpy multidimensional-array data-science

最近,我遇到了一个代码段。请向我解释它正在工作。

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())

2 个答案:

答案 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列。

假设ij是向量-例如以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]

  • 选择第1行和第0列=> 3
  • 选择第2行和第2列=> 8
  • 选择第0行和第1列=> 1
  • 选择第1行和第2列=> 5