Python中列向量转数组后列数未设为1的矩阵乘法问题求助
解决单列转numpy后形状为(N,)的问题
方法1:提取列时保持二维结构
从DataFrame提取列时,使用双括号[[列名]]而非单括号[列名],得到的是DataFrame而非Series,转成numpy数组后会直接是(N,1)的二维结构:
# 假设df是你的数据框,col_name是目标列名 col_df = df[[col_name]] arr = col_df.to_numpy() print(arr.shape) # 输出(N, 1)
方法2:对已生成的一维数组扩展维度
如果已经得到了形状为(N,)的数组,可通过两种方式添加维度:
- 使用
reshape方法(通用写法无需指定N):
import numpy as np # arr为已有的(N,)数组 arr_2d = arr.reshape(-1, 1)
- 使用
np.newaxis:
arr_2d = arr[:, np.newaxis]
方法3:pandas阶段直接转二维数组(兼容旧版本)
针对Python 3.5对应的旧版pandas,也可直接在提取Series后转数组时重塑维度:
arr_2d = df[col_name].values.reshape(-1, 1)
以上方法均可将一维数组转为适合矩阵乘法的二维列向量,解决维度不匹配的问题。
内容的提问来源于stack exchange,提问作者Alexandre Chautard
相关产品推荐
相关产品推荐

