如何访问像`arr [arr> 5]`这样的NumPy数组? [重复]

问题描述 投票:-3回答:1

这个问题在这里已有答案:

所以我正在尝试学习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[]时该布尔数组如何给出指定的输出。帮助感谢。

python numpy
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.