如何使用计算数组索引列?

时间:2018-04-26 13:03:50

标签: python python-3.x numpy

请看一下这段代码:

import numpy as np
from scipy.spatial import distance

#1
X = [[0,0], [0,1], [0,2], [0,3], [0,4], [0,5]]
c = [[0,0], [0,1], [0,3]]

#2
dists = distance.cdist(X, c)
print(dists)

#3
dmini = np.argmin(dists, axis=1)
print(dmini)

#4
mindists = dists[:, dmini]
print(mindists)

(#1)所以我有我的数据X,其他一些点(质心)c,然后(#2)我计算X中每个点到所有点的距离质心c,并将结果存储在dists

(#3)然后我用argmin选择最小距离的索引。

(#4)现在我只想使用步骤3中计算的索引选择最小值的值。

然而,我得到一个奇怪的输出。

# dists
[[ 0.  1.  3.]
 [ 1.  0.  2.]
 [ 2.  1.  1.]
 [ 3.  2.  0.]
 [ 4.  3.  1.]
 [ 5.  4.  2.]]
#dmini
[0 1 1 2 2 2]

#mindists
[[ 0.  1.  1.  3.  3.  3.]
 [ 1.  0.  0.  2.  2.  2.]
 [ 2.  1.  1.  1.  1.  1.]
 [ 3.  2.  2.  0.  0.  0.]
 [ 4.  3.  3.  1.  1.  1.]
 [ 5.  4.  4.  2.  2.  2.]]

在这里和那里阅读,似乎可以通过给出整数列表(索引)来选择特定的列。在这种情况下,我应该使用dmini值来为行索引列。

我期待mindists成为(6,)。我做错了什么?

0 个答案:

没有答案