Python中numpy一维数组转列数组,使用transpose方法无效如何解决
问题原因
numpy中维度为1的数组(你定义的x的shape为(3,))不存在可交换的轴,因此直接调用.T转置不会改变数组形状,无法得到预期的列数组。
可行解决方法
以下几种常用方案都可以得到你需要的shape为(3,1)的列数组:
- 方案1:用
reshape方法显式修改形状-1参数会自动匹配原数组的长度,无需手动计算输入长度:
y = x.reshape(-1, 1)
- 方案2:用
np.newaxis新增维度
直接在第二维位置插入长度为1的新轴:
y = x[:, np.newaxis] # 等价写法:y = x[:, None],np.newaxis本质是None的别名
- 方案3:用
np.expand_dims显式插入轴
参数axis=1指定在第1个轴(从0开始计数)的位置插入新轴:
y = np.expand_dims(x, axis=1)
- 方案4:初始化时直接定义为2D行数组,后续转置即可生效
如果初始化时就给数组加一层括号定义为shape(1,3)的行向量,直接转置就能得到列向量:
x = np.array([[1,2,3]]) y = x.T
以上任意方案输出的y都是你预期的格式:
[[1] [2] [3]]
内容的提问来源于stack exchange,提问作者coder_beginner
相关产品推荐
相关产品推荐

