动机是学习机器学习的时候遇到了困惑:
Ymean = np.zeros((movies, 1))
Ynorm = np.zeros((movies, users))
for i in range(movies):
idx = np.where(R[i,:] == 1)[0]#这里的[0]表示返回的是行索引,还是列索引?
Ymean[i] = Y[i,idx].mean()
Ynorm[i,idx] = Y[i,idx] - Ymean[i]
Ynorm.mean(), idx
网上看了许多资料,说np.where(...)[0]
表示返回的是行索引;np.where(...)[1]
表示返回的是列索引。所以我就产生了困惑,这个解释在我这里好像行不通。
我就自己实验了一下,终于明白了其中奥义。截图如下,无需多言。
我是用jupyter notebook做的验证,文件放在链接里了,有需要自己跑一下,非常简单。