此问题在此处已有答案:
What does x[False]
do in numpy?(1个答案)
4天前关闭。
NumPy的array indexing文档似乎没有提到x[True]
或x[False]
类型的数组索引。
根据经验,使用True
插入大小为1的新维度,而使用False
插入大小为0的新维度。x[True, True]
的行为只插入一个大小为1的新轴,而不是两个。
这种行为与布尔索引不一致,也与将布尔标量视为整数不一致。
寻找观察到的行为的解释,并希望一个合理的。非常感谢!
1条答案
按热度按时间xtfmy6hx1#
在主索引文档页面上有一个部分
https://numpy.org/doc/stable/user/basics.indexing.html#boolean-array-indexing
如上所述,索引阵列应匹配索引阵列的形状或其轴中的一个。
我不认为布尔标量索引有文档记载,或者至少我不知道有这样的页面。我怀疑你看到的行为是历史特征没有被清理的结果。
使用形状匹配的“遮罩”进行正确分度:
不完整的掩码会引发错误:
我想这通常会返回一个带有警告的结果。
您观察到的是布尔标量添加了一个大小为1或0的维:
它显然忽略了多个标量。
我本来想说
[True]
看起来像[np.newaxis]
(又名[None]
),但结果strides
更像reshape
产生的东西。我认为这是一个遗留行为,而不是你应该指望使用的东西。
索引文档注解中的重复引用:
布尔数组的非零等价不适用于零维布尔数组。