Python 理解numpywhere函数

Python 理解numpywhere函数,python,numpy,Python,Numpy,我一直试图理解numpy where函数,但没有取得任何进展。我可以理解一些简单的比较,比如where value>otherValue,但是这个例子,从文档中看并不是很清楚 我希望你能简单地解释一下。感谢您提供的任何帮助: >>> np.where([[True, False], [True, True]], ... [[1, 2], [3, 4]], ... [[9, 8], [7, 6]]) array([[1, 8],

我一直试图理解numpy where函数,但没有取得任何进展。我可以理解一些简单的比较,比如where value>otherValue,但是这个例子,从文档中看并不是很清楚

我希望你能简单地解释一下。感谢您提供的任何帮助:

>>> np.where([[True, False], [True, True]],
...          [[1, 2], [3, 4]],
...          [[9, 8], [7, 6]])
array([[1, 8],
       [3, 4]])
where()
函数接受3个参数。条件,
x
y
。如中所述,如果同时指定了
x
y
,则输出数组包含条件为
True
x
元素和其他地方的
y
元素

对于第一行,它从
x
中选择
1
,从
y
中选择
8
(因为为False),对于第二行,因为两者都为True,所以它从
x
中选择它们

np.where([[True, False], [True, True]],
         [[1,    2],     [3,    4]],
         [[9,    8],     [7,    6]])

   array([[1, 8],
          [3, 4]])

我认为我们可以让事情变得更简单,把重点放在
np.where
而不是嵌套列表上

np.where([True, False, True, True],
         [1,    2,     3,    4],
         [9,    8,     7,    6])
Out[4]: array([1, 8, 3, 4])
我想你可以从这个简单的等价物中得到答案。简单地说,它只是从条件为True的第一个列表(
[1,2,3,4]
)和条件为False的第二个列表(
[9,8,7,6]
)中选择相应的元素


第一个条件为True,然后我们选择1(从对应位置的第一个列表中),第二个条件为False,我们选择8(从对应位置的第二个列表中),依此类推

单参数使用最为常见,与
np.nonzero
同义。这三个论点的情况几乎没有经常使用。不要觉得您必须充分理解它才能在自己的代码中使用。使用布尔掩码设置值还有其他方法。