为什么NumPy数组的shape会没有列数?(13,)代表什么含义?

(13, )的含义说明 (13, )是NumPy一维数组的shape标识,并不是没有列维度,一维数组本身仅存在一个维度,不存在行、列的维度划分。
相关细节说明:
- shape返回的元组长度和数组维度数完全对应:
- 一维数组的shape是长度为1的元组,
(13, )中逗号是Python语法中区分「长度为1的元组」和「带括号的单个整数」的标识,没有实际数值意义,如果去掉逗号写为(13)就只是整数13,不属于元组类型 - 只有二维数组的shape才符合大众认知的「(行数, 列数)」格式,比如13行1列的二维数组shape为
(13, 1),1行13列的二维数组shape为(1, 13)
- 一维数组的shape是长度为1的元组,
- 这类shape的常见产生场景:
- 直接从Python一维列表转换为NumPy数组、或者调用
np.arange()这类默认生成一维数组的方法时,得到的数组shape都会是(n, )格式 - 对高维数组做聚合计算、或者索引取单行/单列时,数组会自动降维为一维数组,比如从
(13,5)的二维数组中提取任意一列,得到的结果shape就是(13, )
- 直接从Python一维列表转换为NumPy数组、或者调用
如果需要将该数组转换为带列维度的二维数组,可以用reshape方法调整:
# 两种写法都可以将一维数组转为13行1列的二维数组 arr = arr.reshape(13, 1) arr = arr.reshape(-1, 1)
内容的提问来源于stack exchange,提问作者Leon
相关产品推荐
相关产品推荐

