numpy ndarray嵌套ndarray浅显理解

简介: 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只跟数据量有关,但其取值,因为是类别索引,因此必须<K。

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

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

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

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

相关文章
|
4月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 6
**NumPy的ndarray对象是核心特征,是同类型元素的多维数组。它包括数据指针、数据类型(dtype)、形状元组和跨度元组。创建数组使用`numpy.array()`,可通过`dtype`指定数据类型。例如:`a = np.array([1, 2, 3], dtype=complex)`生成复数数组。内存布局遵循C或F顺序。**
21 0
|
3月前
|
存储 缓存 C语言
|
3月前
|
机器学习/深度学习 数据采集 并行计算
《零基础实践深度学习》1.7 附录:NumPy介绍 ndarray
这篇文章详细介绍了NumPy库的基本功能和应用,包括ndarray数组的使用、创建、属性查看、数据类型和形状的改变、基本运算、索引和切片,以及统计方法和随机数生成,是进行科学计算和数据分析的基础。
|
4月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 2
**NumPy的ndarray对象是多维数据的核心,它存储同类型元素,具有形状和 strides。形状描述数组维度大小,strides指示元素间字节偏移。通过`numpy.array()`创建,可指定数据类型、复制选项等。例如,`numpy.array(list, dtype, copy=True, order=&#39;C&#39;, subok=False, ndmin=0)`。**
35 4
|
4月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 3
**NumPy的ndarray对象是多维数组,存储相同类型数据,用0开始的索引访问。包括数据指针、dtype、形状和跨度元组。创建数组用`np.array()`,参数控制数据类型、复制、排列和维度。例如:`a = np.array([1,2,3])`。输出:`[1 2 3]`。**
34 1
|
4月前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
100 3
|
5月前
|
Python
NumPy 是 Python 中的一个重要的科学计算包,其核心是一个强大的 N 维数组对象 Ndarray
【6月更文挑战第18天】NumPy的Ndarray是科学计算的核心,具有ndim(维度数)、shape(各维度大小)、size(元素总数)和dtype(数据类型)属性。方法包括T(转置)、ravel()(扁平化)、reshape()(改变形状)、astype()(转换数据类型)、sum()(求和)及mean()(计算平均值)。更多属性和方法如min/max等可在官方文档中探索。
60 5
|
4月前
|
存储 索引 Python
NumPy 教程 之 NumPy Ndarray 对象 6
NumPy的ndarray对象是多维数组,存储同类型元素,以0开始索引。包括数据指针、数据类型dtype、形状元组和跨度元组。创建使用`numpy.array()`,如`a = np.array([1, 2, 3], dtype=complex)`。内存布局可为C式行优先或F式列优先。
24 0
|
6月前
|
存储 数据挖掘 测试技术
【Python Numpy】Ndarray属性
【Python Numpy】Ndarray属性
|
存储 索引 Python
Python学习笔记第二十八天(NumPy Ndarray 对象)
Python学习笔记第二十八天讲解NumPy Ndarray 对象 、ndarray 的内部结构的用法。
97 0
Python学习笔记第二十八天(NumPy Ndarray 对象)