为什么在单个索引numpy数组的形状中有一个额外的逗号

bho*_*ass 11 arrays numpy

一个numpy数组a a = numpy.arange(12)

形状a.shape =(12,)

为什么我们需要逗号?形状(12)是为其他东西保留的吗?

小智 19

我们不使用(12)单元素元组(如[12]单元素列表)的原因是圆括号也出现在公式中.例如,在x = 2*(5+7)该部分(5+7)只是一个数字,而不是一个元组.但是,如果我们实际上意味着它是一个单元素元组怎么办?尾随逗号是表示这一点的一种方式.相比:

>>> 2*(5+7)
24
>>> 2*(5+7,)
(12, 12)
Run Code Online (Sandbox Code Playgroud)

使用列表时,不需要尾随逗号,尽管某些样式指南建议使用它以保持一致性.

>>> 2*[5+7]
[12, 12]
>>> 2*[5+7,]
[12, 12]
Run Code Online (Sandbox Code Playgroud)


wim*_*wim 5

numpy 数组的 shape 属性总是返回一个元组。

数组中的维数和项数由它的 定义shape,它是一个由 N 个正整数组成的元组,用于指定每个维度的大小。

(12,)只是一个单元素元组,因此这表明您有一个大小为 的一维数组(因为元组的长度为 1)12

记录在这里