numpy数组中行向量与列向量的维度差异问题咨询
NumPy中行/列向量维度差异的原因说明
你的操作完全没有错误,这个现象是NumPy数组的轴设计规则导致的:
- 你定义的
b = np.array([1,2,3])是一维数组,本身不具备「行/列」的方向属性,只是长度为3的线性序列。它只有1个轴(轴0),所以np.ndim返回1,形状返回(3,),很多场景下会被默认适配为行向量参与运算,但本质上不属于二维结构的行向量。 - 你定义的
c = np.array([[1], [2], [3]])是二维数组,两层嵌套中括号代表有两个轴:轴0是行方向(长度3),轴1是列方向(长度1),所以np.ndim返回2,形状返回(3,1),这是标准的二维结构列向量表示。
如果你需要严格对应的二维结构行向量,可以这么定义:
row_vec = np.array([[1,2,3]]) print(np.ndim(row_vec)) # 返回2 print(np.shape(row_vec)) # 返回(1,3)
日常开发中可以用以下方法快速做维度转换:
- 一维数组转标准列向量:
b.reshape(-1, 1)或者b[:, np.newaxis] - 一维数组转标准行向量:
b.reshape(1, -1)或者b[np.newaxis, :]
测试代码验证
# 一维数组测试 import numpy as np b = np.array([1,2,3]) print(b) print(np.ndim(b)) print(np.shape(b)) print(np.size(b)) ''' Output: [1 2 3] 1 (3,) 3 ''' # 二维列向量测试 c= np.array([[1], [2], [3]]) print(c) print(np.ndim(c)) print(np.shape(c)) print(np.size(c)) ''' Output: [[1] [2] [3]] 2 (3, 1) 3 '''
内容的提问来源于stack exchange,提问作者blue_25
相关产品推荐
相关产品推荐

