查找嵌套数组的形状

Find shape of nested array

我有一个像这样的 numpy 数组:

import numpy as np
a = np.zeros((30,2))

这给了我一个包含 30 行和 2 列的数组 a.shape returns >> (30,2)

但是,如果我检查 a[0].shape >> (2,) 的形状,但我希望看到 (1,2) 有没有一种方法可以创建此数组 (30,2) 并仍然将各个元素的形状设为 (1,2)?

如果使用integer array indexing,第一个轴不会消失:

In [8]: a[[0]].shape
Out[8]: (1, 2)

第一个轴的长度将与用于索引第一个轴的列表的长度相同。由于len([0])为1,所以a[[0]]第一轴的长度为1。

相比之下,a[0]是一个基本切片,根据the rules删除了关联的轴。

两种类型的索引具有一定的一致性:如果我们将标量 0 视为长度为 0 的数组,将列表 [0] 视为长度为 1 的数组-like,那么 a[index] 返回一个数组,其第一个轴的长度与 index 相同。即使 index 本身是一个 N 维数组,这个 属性 仍然成立。

作为 的替代方法,您也可以使用

a[0, np.newaxis].shape
>>> (1, 2)

一个explanation几乎可以在另一个参考文献的同一地点找到。