对整型数组进行多次比较



我有一个整数数组

mypos = np.array([10, 20, 30, 40, 50])

和start &结束位置,像这样:

mydelims = [[5, 12],
[15,31],
[12,16],
[22,69]]

我想遍历mydelims并计算每对中有多少个位置。本能地,我会这样写:

for mypair in mydelims:
print(sum(mypos>mypair[0] & mypos<mypair[1]))

然而,python似乎无法处理这个问题。我知道mypos>42将返回一个布尔值数组,但是对一个整数数组应用多次比较的最有效方法是什么?

你很接近,正在寻找np.logical_and:

import numpy as np
mypos = np.array([10, 20, 30, 40, 50])
mydelims = [[5, 12],
[15, 31],
[12, 16],
[22, 69]]
result = {
tuple(mypair): sum(np.logical_and(mypos > mypair[0], mypos < mypair[1])) 
for mypair in mydelims
}
print(result)

输出:

{(5, 12): 1, (15, 31): 2, (12, 16): 0, (22, 69): 3}

请注意,您将分隔符视为不包含的—我认为这是故意的。即512都不属于[5, 12]

最新更新