当数组为2D时,许多使用numpy
的python片段都使用arr[idx,:]
表示法。
e.g
gradPred = -outputVectors[target,:] * (1 - r_W_prob[target])
gradPred += np.dot(r_W_prob[negative_samples], outputVectors[negative_samples, :])
我有两个后续问题:
a)outputVectors[target,:]
和outputVectors[target]
之间是否存在差异?
b)如果存在差异,是否存在"首选方式"操作,还是依赖于上下文?
谢谢!
答案 0 :(得分:4)
<强>可读性。强>
从语义上讲,这两个符号是2D数组的相同(它们都返回一维数组)。 但是,outputVectors[target, :]
使得更清晰数组是2D,返回的是1D。
如果outputVectors
是1D,您可以使用outputVectors[target]
返回一个标量(如果您注意到,那就是代码中的r_W_prob[target]
)。