给定一个有序一维数组的元组(arr1, arr2, arr3, )
,这将是获得最小/最大索引元组以((min1, max1), (min2, max2), (min3, max3), )
使数组跨越最大公共范围的最佳方法?
我的意思是
min(arr[min1], arr2[min2], arr3[min3]) > max(arr1[min1-1], arr2[min2-1], arr3[min3-1])
和
max(arr[min1], arr2[min2], arr3[min3]) < min(arr1[min1+1], arr2[min2+1], arr3[min3+1])
上限也一样?
一个例子:
给定arange(12)
和arange(3, 8)
,我想得到((3,8), (0,6))
,以那个为目标arange(12)[3:8] == arange(3,8)[0:6]
。
编辑请注意,数组可以是浮点数或整数。
抱歉,如果这令人困惑;我现在找不到更容易的词。任何帮助是极大的赞赏!
EDIT2 / answer我只是意识到我在提出问题时很糟糕。我最终解决了我想要的问题:
mins = [np.min(t) for t in arrays]
maxs = [np.max(t) for t in arrays]
lower_bound = np.max(mins)
upper_bound = np.min(maxs)
lower_row = [np.searchsorted(arr, lower_bound, side='left') for arr in arrays]
upper_row = [np.searchsorted(arr, upper_bound, side='right') for arr in arrays]
result = zip(lower_row, upper_row)
但是,这两个答案似乎都对我提出的问题有效,所以我不确定只选择其中一个作为“正确” - 我该怎么办?