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

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

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

在这里插入图片描述

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

可是python报错:
在这里插入图片描述

然后我用另一个py文件测试了一下这个有趣的现象:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值