该规则有一个例外。“高级索引”文档部分没有提及它,但在“基本切片和索引”部分的开头附近,您会看到以下文本:
为了保持与Numeric中的常用用法向后兼容, ,省略号对象或newaxis对象但不 , 。整数数组或其他嵌入式序列。
a[[1, np.array(2)]]@H_301_9@并不会触发基本索引。它将触发向后兼容性逻辑的未记录部分,如源代码中的注释所述:
/*
* Sequences < NPY_MAXDIMS with any slice objects
* or newaxis, Ellipsis or other arrays or sequences
* embedded, are considered equivalent to an indexing
* tuple. (`a[[[1,2], [3,4]]] == a[[1,2], [3,4]]`)
*/
@H_301_9@
该np.array(2)@H_301_9@名单内引起仿佛它是一个元组,待处理的名单,但结果
a[(1, np.array(2))]@H_301_9@仍是一种先进的索引操作。最终,将
1@H_301_9@和和
2@H_301_9@应用于不同的轴,这与不同
a[[1, 2]]@H_301_9@,结果最终看起来与相同
a[1, 2]@H_301_9@,但是如果您使用3D进行尝试
a@H_301_9@,则会生成一个副本而不是视图。