制作一个包含两个列表的 ndarray python



我正在尝试按照本教程使用 scipy 进行 K- 表示聚类:http://glowingpython.blogspot.no/2012/04/k-means-clustering-with-scipy.html

问题在于他使用 vstack 来制作任意数据点,进而返回一个 ndarray。我有两个列表:长度和宽度。如何将它们组合到一个 ndarray 中,以便我可以使用他的例子?

lengths = [300.0, 300.0, 300.0, 300.0, 303.0, 300.0]
breadths = [9.6, 9.7, 9.8, 10.3, 6.8, 9.4]

Numpy的vstack只会接受这些作为列表:

In [23]: np.vstack((lengths, breadths))
Out[23]:
array([[ 300. ,  300. ,  300. ,  300. ,  303. ,  300. ],
       [   9.6,    9.7,    9.8,   10.3,    6.8,    9.4]])

如果要将其显式转换为数组,可以执行以下操作:

In [24]: np.array(lengths)
Out[24]: array([ 300.,  300.,  300.,  300.,  303.,  300.])

但是,我认为在这个例子的情况下,kmeans期望观察结果是不同的行,所以你需要转置:np.vstack((lengths, breadths)).T

最新更新