You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于NumPy二维数组维度、轴与散点绘图索引的技术问询

二维数组维度与散点图数据选取的疑问解答

一、先明确数据集的组织逻辑

你用aa = np.random.randn(10, 2)生成的数组,本质是10个独立的数据点,每个点包含2个特征值——每一行对应一个完整的数据点,列则对应这个点的不同属性(比如x坐标和y坐标)。

二、散点图的输入要求决定了数据选取方式

plt.scatter()函数需要两组长度相同的一维数组:一组是所有点的x坐标集合,另一组是所有点的y坐标集合。

  • x[:,0]的含义是「取所有行的第0列」,得到的是10个点的x坐标,正好是散点图需要的x轴数据;
  • x[:,1]是「取所有行的第1列」,对应10个点的y坐标,作为y轴数据。

而x[0,:]是「取第0行的所有列」,得到的只是第一个数据点的x和y值——用它的话,你只能在图上画出一个点,完全达不到散点图展示整个数据集分布的目的。

三、澄清「维度」与「轴」的概念误区

这里的混淆不是因为场景不同定义变了,而是要区分两个容易混淆的概念:

  • 数组的轴(axis):这是NumPy对数据存储结构的定义,axis=0对应行方向(控制样本的数量,这里是10个),axis=1对应列方向(控制每个样本的特征数量,这里是2个);
  • 数据的特征维度:指每个样本具备的属性数量,比如这里每个点是2维的(x和y两个属性),这个「维度」对应数组axis=1的长度。

绘图时不是「维度指代列」,而是因为我们默认用「行存样本、列存特征」的方式组织数据——这是数据分析和机器学习里的通用习惯,所以要取所有样本的同一特征列来作为坐标轴数据。如果你的数据集是反过来(列存样本、行存特征,比如shape为(2,10)),那确实会用x[0,:]和x[1,:]来取坐标,但这种组织方式几乎不会用到。

四、推荐参考资料

  • 《Python数据分析基础》:重点看NumPy数组索引、Matplotlib散点图的相关章节,理解数据组织与绘图需求的对应关系;
  • NumPy官方文档的「数组索引」章节:系统学习数组的切片、索引规则;
  • Matplotlib官方文档的scatter函数说明:明确函数输入数据的格式要求。

内容的提问来源于stack exchange,提问作者user4556432

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:10:54