使用数组子集的numpy'where'

时间:2017-08-16 06:41:09

标签: python arrays numpy

我正在使用python 2.7.13,并且我在使用numpy进行数组切片时遇到的行为让我感到困惑。

import numpy as np
a=np.array([1,1,2,3,4,5,6,7])
print a
print a[1:]
print a[1:] > 3

print np.where( a[1:]  > 1 )

我原以为我会看到最终输出[2 3 4 5 6 7 8],即在切片中找到的数组的索引。

我的目标是将布尔掩码应用于数组的所有元素,除了第一个元素。然后获取数组中的值,该值对应于索引数组中的第一个“True”值。这可能吗?

2 个答案:

答案 0 :(得分:3)

您的代码完全按照您的意愿执行。切片 a [1:] 时,会得到np.array([1,2,3,4,5,6,7])。我得到的输出:

(array([1, 2, 3, 4, 5, 6], dtype=int64),)

在您指定的 a 切片中为您提供2,3,4,5,6,7的索引。

答案 1 :(得分:1)

我想这可以解决你的问题:

import numpy as np
a=np.array([1,1,2,3,4,5,6,7])
b=a[1:]
print np.where( b  > 1 )

在您的情况下,print语句返回数组a中的元素索引,同时跳过第一个元素。 获取数组aprint np.where(a>1)中的索引 我希望这会有所帮助。