python 2d numpy-array probs
的形状为(6,3)
,另一个1d数组y
的形状为(6,)
。 probs[range(6),y]
的含义是什么?
例如:
import numpy as np
probs=np.array([[ 1., 2., 3.],
[ 1., 3., 5.],
[ 1. , 4., 7.],
[ 1., 5., 9.],
[ 1., 6., 11.],
[ 1., 7., 13.]])
y= [0, 0, 1, 1, 2, 2]
probs[range(6),y]
这里使用哪条规则?
答案 0 :(得分:1)
规则很简单,它将range(6)
的第一个元素作为x坐标,将y
的第一个元素作为第一个元素的y坐标。两个索引的第二个元素用于第二个元素,依此类推。
numpy indexing docs
中也解释了这一点。
要解释一下,假设您有一个3x3阵列:
import numpy as np
array = np.arange(9).reshape(3,3)
array
array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])
要获取0,0
或1,2
元素,您可以使用整数索引:
array[0,0]
# 0
array[1,2]
# 5
如果你想要两者,你可以将这两者结合起来:
array[[0,1],[0,2]]
# array([0, 5])
因此,使用[range(6),y]
创建一个包含以下元素的新数组:
# [0, 0], [1, 0], [2, 1], [3, 1], [4, 2], [5, 2]
因为此上下文中的range(6)
等同于[0,1,2,3,4,5]
。