【发布时间】:2013-07-01 04:41:10
【问题描述】:
我正在尝试在 scipy 中使用 kmeans 聚类,这正是这里存在的:
我想做的是转换一个列表,如下所示:
data without_x[
[0, 0, 0, 0, 0, 0, 0, 20.0, 1.0, 48.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1224.0, 125.5, 3156.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 22.5, 56.0, 41.5, 85.5, 0, 0, 0, 0, 0, 0, 0, 0, 1495.0, 3496.5, 2715.0, 5566.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
]
为了与 Kmeans 方法一起使用它。当我尝试将列表列表转换为 ndarray 时,我得到一个空数组,从而使整个分析无效。 ndarray 的长度是可变的,它取决于收集的样本数量。但我可以通过 len(data_without_x)
这是返回空列表的代码的 sn-p。
import numpy as np
import "other functions"
data, data_without_x = data_preparation.generate_sampled_pdf()
nodes_stats, k, list_of_list= result_som.get_number_k()
data_array = np.array(data_without_x)
whitened = whiten(data_array)
centroids, distortion = kmeans(whitened, int(k), iter=100000)
这就是我在一个简单的日志文件中保存的输出:
___________________________
this is the data array[[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
...,
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]
[ 0. 0. 0. ..., 0. 0. 0.]]
___________________________
This is the whitened array[[ nan nan nan ..., nan nan nan]
[ nan nan nan ..., nan nan nan]
[ nan nan nan ..., nan nan nan]
...,
[ nan nan nan ..., nan nan nan]
[ nan nan nan ..., nan nan nan]
[ nan nan nan ..., nan nan nan]]
___________________________
有人知道当我尝试将列表列表转换为 numpy.array 时会发生什么吗?
感谢您的帮助
【问题讨论】:
-
尝试
print(np.abs(data_array).sum())看看数组是否真的为空。字符串表示并未显示所有内容。 -
上一行的输出不是零是2099918.5...这意味着它不是空的...那为什么我会得到这样的结果?
-
同样,打印 NumPy 数组并不能显示全部内容——非零元素在
...中。存在 NaN 是因为白化无法处理全零的行和列。你应该删除那些。 (这也会使 k-means 更快。)
标签: python numpy scipy k-means multidimensional-array