当我运行此代码时:
import numpy as np
a = np.array([1, 2, 3, 4, 5, 6])
print(np.where(a > 2))
获得一个指数数组是很自然的,其中一个> 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)也存在(参见文档).
最佳答案 numpy.where返回一个元组,因为元组的每个元素都引用一个维度.
在2个维度中考虑此示例:
a = np.array([[1, 2, 3, 4, 5, 6],
[-2, 1, 2, 3, 4, 5]])
print(np.where(a > 2))
(array([0, 0, 0, 0, 1, 1, 1], dtype=int64),
array([2, 3, 4, 5, 3, 4, 5], dtype=int64))
如您所见,元组的第一个元素是指相关元素的第一维;第二个元素指的是第二个维度.
这是一个经常使用的常规numpy.当你要求数组的形状时,你也会看到它,即一维数组的形状将返回一个带有1个元素的元组:
a = np.array([[1, 2, 3, 4, 5, 6],
[-2, 1, 2, 3, 4, 5]])
print(a.shape, a.ndim) # (2, 6) 2
b = np.array([1, 2, 3, 4, 5, 6])
print(b.shape, b.ndim) # (6,) 1