这个问题在这里已有答案:
所以我正在尝试学习Numpy,我无法理解这段代码是如何提供输出的:
arr = array([1,2,3,4,5,6,7,8,9,10])
arr[arr>5]
输出:
array([6,7,8,9,10])
我知道实际上arr>5
返回了一个布尔值数组,但我无法理解传递给arr[]
时该布尔数组如何给出指定的输出。帮助感谢。
>>> import numpy as np
>>> a = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
>>> a
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
正如您所说,a > 5
会产生一个布尔值数组:
>>> mask = a > 5
>>> mask
array([False, False, False, False, False, True, True, True, True,
True])
这可以解释为掩码。类似于您可以访问single elements的方式,例如第一个元素,用
>>> a[0]
1
您可以通过此掩码使用index arrays访问特定元素:
>>> a[mask]
array([ 6, 7, 8, 9, 10])
1, 2, 3, 4, 5
没有出现,因为mask
的前5个元素是False
。其余的是True
,因此显示6, 7, 8, 9, 10
。