当我运行这段代码时:
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
print(np.where(a > 2))
很自然地得到一个索引数组,其中 a > 2
,即 [2, 3, 4, 5]
,但我们得到:
(array([2, 3, 4, 5], dtype=int64),)
即第二个成员为空的元组。
然后,要获得 numpy.where
的“自然”答案,我们必须这样做:
np.where(a > 2)[0]
这个元组有什么意义?在什么情况下有用?
注意:我在这里只谈论用例 numpy.where(cond)
而不是 numpy.where(cond, x, y)
也存在(参见文档)。
原文由 Basj 发布,翻译遵循 CC BY-SA 4.0 许可协议
numpy.where
返回一个元组,因为元组的每个元素都指向一个维度。在二维中考虑这个例子:
如您所见,元组的第一个元素是指相关元素的第一个维度;第二个元素是指第二个维度。
这是一个约定
numpy
经常使用。当您询问数组的形状时,您也会看到它,即一维数组的形状将返回具有 1 个元素的元组: