我有一个像这样的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)?
答案 0 :(得分:4)
如果使用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的数组。 ,则a[index]
返回一个数组,其第一个轴的长度与index
相同。即使index
本身是一个N
维数组,该属性仍为true。
答案 1 :(得分:2)