从技术上讲,不需要遮罩的尺寸与您为其索引的数组的尺寸匹配。(在以前的版本中,限制甚至更少,您可以避免一些极端的形状不匹配。)
该文档将布尔索引描述为
单个布尔索引数组实际上与x
[obj.nonzero()]相同,如上所述,obj.nonzero()返回整数索引数组的元组(长度为obj.ndim),该数组显示obj的True元素。
但
nonzero对于0维输入来说很奇怪,因此这种情况是“实际上相同”结果不相同的一种方式:
布尔数组的非零等价不适用于零维布尔数组。
NumPy对于0维布尔索引具有特殊情况,其动机是希望具有以下行为:
In [3]: numpy.array(3)[True]Out[3]: array([3])In [4]: numpy.array(3)[False]Out[4]: array([], dtype=int64)
我将在源代码中引用处理0维布尔索引的注释:
if (PyArray_NDIM(arr) == 0) {
虽然这主要是针对0维数组的0维索引,但它也适用于使用布尔值索引多维数组。从而,
x[True]
等于
x[np.newaxis],产生一个在前面带有新的length-1轴的结果,并且
x[False]
产生一个结果,其新轴的长度为0,不选择任何元素。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)