【发布时间】:2020-02-17 03:35:41
【问题描述】:
考虑以下代码,该代码生成以下dst 矩阵。
tmp = pd.DataFrame()
tmp['a'] = np.random.randint(1, 10, 5)
tmp['b'] = np.random.randint(1, 10, 5)
dst = pairwise_distances(tmp, tmp, metric='l2')
dst
如下所示
array([[0. , 5.38516481, 5. , 4.12310563, 2. ],[5.38516481, 0. , 1.41421356, 3.16227766, 5. ],[5. , 1.41421356, 0. , 4. , 4.12310563],[4.12310563, 3.16227766, 4. , 0. , 5. ],[2. , 5. , 4.12310563, 5. , 0. ]])
现在,我想以某种方式将4 作为输出列,因为row=0 and col=4 是row0 与另一行的最小距离。
我正在尝试使用以下代码来完成这项工作!但是np.nonzeros() 搞砸了游戏。
np.argmin(dst[0, np.nonzero(dst[0,:])]) 我得到3 作为输出,我应该得到4。我知道np.nonzero() 返回另一组维度[1,2,3,4],其中argmin 选择3rd 列,这是4th 矩阵的实际4th 列。需要帮忙!提前致谢!!
【问题讨论】:
标签: python pandas numpy scikit-learn