我一直在努力了解numpy哪里有功能但没有到达任何地方。我可以理解简单的比较,比如值> otherValue,但是这个例子,从文档中看起来并不是更清楚。
我很欣赏这个易于理解的故障。感谢您提供的任何帮助:
>>> np.where([[True, False], [True, True]],
... [[1, 2], [3, 4]],
... [[9, 8], [7, 6]])
array([[1, 8],
[3, 4]])
答案 0 :(得分:1)
where()
函数接受3个参数。条件,x
和y
。正如documentation中所述,如果同时指定了x
和y
,则输出数组包含x
的元素,其中条件为True
,以及y
其他地方的元素。
在第一行的情况下,它从1
中选择x
,从8
选择y
(因为为假),从第二行选择,因为两者都是True,它会选择它们来自x
。
np.where([[True, False], [True, True]],
[[1, 2], [3, 4]],
[[9, 8], [7, 6]])
array([[1, 8],
[3, 4]])
答案 1 :(得分:0)
我认为我们可以使事情更简单,并专注于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(从对应位置的第二个列表中选择),依此类推。