做机器学习实验K-means时,我想把每个聚类(cluster)当成每个元素放入np.array中,而每个聚类是一个矩阵,矩阵的行数是该类样本点的个数,矩阵的列数是每一个样本点的特征数(即维度)。
我希望得到的clusters大概是这样的:
python中关于np.array初始化不同维度矩阵的有趣现象
于是我在写程序时先初始化一个三维数组clusters,第一维代表聚类的个数,第二类代表每一类的样本点个数,第三类代表每个点的特征个数。

最初,我把每一类的中心点都加入到每个类cluster中。所以初始时,三维数组的第二维等于1。

python中关于np.array初始化不同维度矩阵的有趣现象

然后遍历平面上的所有点,把这个点的所属类别加入到相应的cluster中,用vstack方法拼接在每个cluster后面。
(注:该实验中我使用的点的特征数为2,便于可视化)

可是python报错:
python中关于np.array初始化不同维度矩阵的有趣现象

然后我用另一个py文件测试了一下这个有趣的现象:
python中关于np.array初始化不同维度矩阵的有趣现象
python中关于np.array初始化不同维度矩阵的有趣现象
python中关于np.array初始化不同维度矩阵的有趣现象
python中关于np.array初始化不同维度矩阵的有趣现象

通过以上现象我们可以看出:

  1. np.array()支持数组元素类型不同!
  2. 如果np.array()初始化时每个元素类型相同(在我的程序里表现为所有元素都是同型矩阵),那么就不能把一个不同维度的矩阵重新复制给该列表中的元素。也就是说,此时要想更新列表元素,只能用同类型的元素去更新。
  3. 如果如果np.array()初始化时每个元素类型并非相同,那么可以随意更改列表中的元素。

相关文章:

  • 2021-11-02
  • 2021-11-13
  • 2022-12-23
  • 2021-10-18
  • 2021-12-12
  • 2022-01-05
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-16
  • 2022-12-23
  • 2022-12-23
  • 2022-03-03
  • 2022-12-23
  • 2021-11-17
  • 2022-12-23
相关资源
相似解决方案