- 我有一个数组,看起来像这样:
[1,2,4,1,2,5,1,2,6]
- 给定值
3
- 我想在上面的列表中找到封装给定值的所有值对.
我可以使用对分法找到[2,6]值,但如何找到所有值?
x = np.array([1,2,4,1,2,5])
xL = bisect_left(x,start)-1
xU = bisect_left(x,start)
print(xL ," ", xU)
lower = x[xL]
upper = x[xU]
print(lower, upper)
附笔.
[1,2,4,1,2,5,1,2,6]
3
我可以使用对分法找到[2,6]值,但如何找到所有值?
x = np.array([1,2,4,1,2,5])
xL = bisect_left(x,start)-1
xU = bisect_left(x,start)
print(xL ," ", xU)
lower = x[xL]
upper = x[xU]
print(lower, upper)
附笔.
你可以这样做:
import numpy as np
x = np.array([1, 2, 4, 1, 2, 5, 1, 2, 6])
x_left = x[:-1]
x_right = x[1:]
encapsulation = np.where((x_left < 3) & (x_right > 3))
left_encapsulation_values = x_left[encapsulation]
right_encapsulation_values = x_right[encapsulation]
您有一个用于左值的数组(不包含最后一个元素,因为它没有右邻居)和一个用于右值的数组(没有第一个元素,同样的 idea ).然后用定义的条件屏蔽这些数组,瞧,有了封装3的左右值.
left_encapsulation_values=array([2, 2, 2])
right_encapsulation_values=array([4, 5, 6])