Python机器学习入门:关于X[:, numpy.newaxis, 2]的疑问求助
代码疑问解答
1. 数字2的来源是什么?
datasets.load_diabetes()返回的特征矩阵X是二维数组,每一列对应一个特征,Python索引从0开始,数字2代表取第3个特征。这个数据集共有10个特征,选这个特征是为了做单特征回归的演示,方便后续用散点图直观展示特征和目标变量的关系。
2. numpy.newaxis是什么?
你猜对了,numpy.newaxis本质就是None,它的核心作用是给数组新增一个维度。原X的形状是(样本数, 10),加上numpy.newaxis后,数组形状变为(样本数, 1, 10),再取索引2后,最终得到(样本数, 1)的二维数组——这样做是为了适配scikit-learn模型的输入要求,多数模型要求特征输入是二维数组(样本数×特征数)。
3. 方括号中逗号分隔的参数是什么?
这是numpy多维数组的索引语法,逗号分隔的是不同维度的索引规则:
- 第一个
::表示取该维度的所有元素,这里就是选中所有样本; numpy.newaxis:在当前位置新增一个维度;- 数字
2:在新增维度后的第三个维度上,取索引为2的元素(也就是原特征矩阵的第3个特征)。
整行代码的作用是从原特征矩阵中提取所有样本的第3个特征,并将其转换为列向量形式的二维数组。
内容的提问来源于stack exchange,提问作者iltan
相关产品推荐
相关产品推荐

