为什么索引 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
代码:
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