栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

numpy ndarray嵌套ndarray浅显理解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

numpy ndarray嵌套ndarray浅显理解

近日,做图像聚类,使用KMeans算法的过程中,遇到了一个写法:

# 这里centers是得到的质点集合,是一个矩阵,labels是得到的标签,也是一个矩阵
res = centers[labels.flatten()]

所以我就很好奇,centers是K*m的,labels是n*1的,得到的结果怎么会变成n*m的呢?

而且,关键是我搞不清楚这是numpy的用法,还是cv2的特殊用法,但从格式上来看,我觉得还是numpy的用法,因此,我写了一段测试代码。

import numpy as np

centers=np.array([[1,2,3],[4,5,6],[7,8,9]],dtype='int32')
labels=np.array([[1],[1],[1],[2],[2],[2],[0],[0],[0],[1],[1],[1],[2],[2],[2],[0],[0],[0]],dtype='int32')
res=centers[labels]
print(res)

这里解释一些:

centers是3*3的矩阵,labels是聚类得到的全部数据的标签,是n(数据量)*1的矩阵,这里的n只跟数据量有关,但其取值,因为是类别索引,因此必须

这里的res则是得到n*3的矩阵

因此ndarray1[ndarray2]这种写法的含义,从我的理解是:

遍历ndarray2,以ndarray2的值作为索引取ndarray1的相应值,最终得到的数据条数则是和ndarray2的数相等,至于每条数据有几个值,则是又ndarray1决定的

主要是我没查到numpy的定义,因此这只是我自己浅显易懂的理解,而且,我不确定是不是这种写法有特定的条件,比如像这里,ndarray2得到的值是ndarray1的索引。这就有待再以后的使用中注意了。有明白的大佬,可以留言指点一下,再此先谢过了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665455.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号