2017-02-26 61 views
0

我新的numpy的&有一个关于它的问题:关于numpy的形状

根据docs.scipy.org中,“形状”的方法是“阵列的尺寸对于具有N行的矩阵。和m列,形状将是(N,M)”

假设我创建如下一个简单的数组:

np.array([[0,2,4],[1,3,5]]) 

使用 “形状” 的方法,它返回(2,3)(即阵列有2列& 3列)

但是,对于数组([0,2,4]),形状方法将返回(3,)(这意味着它有3行,根据上面的定义)

我很困惑:数组([0,2,4])应该有3列而不是3行,所以我期望它返回(,3)。

任何人都可以帮助澄清?非常感谢。

+1

请不要关注标签,“行”和“列”。只需要计算维数 - 1,2和3等。在讨论二维数组时,行和列是最有意义的。使用1d阵列,谈论元素更有意义。但那只是惯例。 – hpaulj

+0

哦,非常感谢! – Owenleung

回答

3

这只是表示法 - 在Python,元组是从表达分组分辨(或操作的顺序的东西)通过使用逗号的 - 也就是说,(1,2,3)是一个元组并(2x + 4) ** 5包含一个表达式2x + 4。为了保持单元元组不同于单元元素表达式,否则元素表达式会不明确((1)(1) - 这是单元素元组,而简单表达式的值为1?),我们使用尾随逗号表示元组。

你得到的是一个单一的尺寸响应,因为只有一个尺寸来衡量,打包成tuple类型。

0

numpy不仅支持二维数组,而且支持多维数组,并且通过多维我的意思是一维,二维,三维...... nD,并且有一种表示格式相应的维度数组。 lenarray.shape会得到你该数组的维数。如果数组是1-D,则不需要表示为(m, n),或者如果数组是3-D,则它不足以表示其维度。

因此array.shape的输出并不总是在(m, n)格式,它将取决于阵列本身,你会得到不同的尺寸不同的输出。