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

使用np.c_构造三阶多项式特征时生成行向量而非列矩阵的问题求助

np.c_构造三阶多项式特征时生成行向量而非列矩阵的问题求助

嘿,我看你在用np.c_手动构造三阶多项式特征时遇到了和预期不符的问题,咱们来一步步理清楚原因和解决办法:

问题核心差异

你自己测试用的x是一维数组(形状(20,)),而实际导入的francis_guide_vane_pos是二维行向量(形状(1, 286996))——这就是导致np.c_行为不同的关键!

  • 对一维数组,np.c_会默认把它当作列向量来拼接,所以能得到(20, 3)的特征矩阵;
  • 但对二维行向量,np.c_会直接按行方向横向拼接每个输入,结果就变成了(1, 3*286996)的超长行向量,这和你想要的结果完全相反。

解决方法:把行向量转为列向量

只需要先把你的原始数据转换成列向量(形状(286996, 1)),再用np.c_拼接就可以得到预期的特征矩阵了,这里有两种常用的方式:

方法1:用reshape(-1, 1)转换

# 先将原行向量转为列向量
fgv_pos_col = francis_guide_vane_pos.reshape(-1, 1)
# 构造三阶多项式特征矩阵
francis_guide_vane_pos_engineered = np.c_[fgv_pos_col, fgv_pos_col**2, fgv_pos_col**3]
# 验证形状,应该输出 (286996, 3)
print(francis_guide_vane_pos_engineered.shape)

方法2:用[:, np.newaxis]添加新轴

# 通过索引添加列维度,转为列向量
fgv_pos_col = francis_guide_vane_pos[:, np.newaxis]
# 构造特征矩阵
francis_guide_vane_pos_engineered = np.c_[fgv_pos_col, fgv_pos_col**2, fgv_pos_col**3]

验证效果

转换后每个输入都是(286996, 1)的二维列向量,np.c_会按列方向拼接,最终就能得到你想要的n行3列的特征矩阵啦,和你测试用的X结构完全一致~

备注:内容来源于stack exchange,提问作者felix_the_cat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 14:18:03