为什么索引 numpy 数组中不存在的维度不会引发错误?

Why does indexing a nonexistent dimension in a numpy array not throw an error?

代码:

aaa = np.array([1,7,3])
print('shape of aaa:', aaa.shape)
print(aaa[:1])

结果:

shape of aaa: (3,)
[1]

为什么这行得通?它不应该抛出某种关于索引不存在的维度的错误吗?还有,为什么结果是1,为什么结果是数组?

非常感谢您的帮助!!

您没有为不存在的维度编制索引。通过 arr[a:b] 你告诉 numpy 给你索引从 upto 开始但不包括 b 的所有元素。因为这可以是多个东西,所以结果是一个数组。这是一个例子:

arr = [2,3,5,7,9,11,13,17]
arr[2:5]

给你一个索引为 2 的索引,即第 3 个到索引 5 之前的那个,即第 5 个,所以你得到

[5, 7, 9]

如果省略 a 或 b,则表示从头到尾。所以 aaa[:1] 从一开始就给你不包括 aaa[1] 即 aaa[0] 作为数组。

您可以索引一个 aaa[0,0] 不存在的维度,您会得到

IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed