如何访问类似“ arr [arr> 5]”之类的NumPy数组?

时间:2018-12-31 16:02:02

标签: python numpy

所以我正在尝试学习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[]时如何给出指定的输出。 帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

>>> 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