这是一个矢量化的方法 –
an = angle.ravel()
sidx = an.argsort()
cut_idx = np.searchsorted(an[sidx], lags)
out = np.split(list1.ravel()[sidx], cut_idx[1:-1])
样本输入,输出 –
In [97]: lags = np.array([0, 30, 60, 90, 120, 150, 180, np.inf])
...:
...: list1 = np.array([[500, 800, 1000, 200, 1500], \n ...: [220, 450, 350, 1070, 1780], \n ...: [900, 450, 1780, 1450, 100],
...: [340, 670, 830, 1370, 1420], \n ...: [850, 630, 1230, 1670, 910]])
...:
...: angle = np.array([[50, 80, 100, 20, 150],\n ...: [22, 45, 35, 107, 178],\n ...: [90, 45, 178, 145, 10],
...: [34, 67, 83, 137, 142],\n ...: [85, 63, 123, 167, 91]])
...:
In [99]: out
Out[99]:
[array([100, 200, 220]), #
array([340, 350, 450, 450, 500]), #
array([630, 670, 800, 830, 850]), #
array([ 900, 910, 1000, 1070]), #
array([1230, 1370, 1420, 1450]), #
array([1500, 1670, 1780, 1780]), #
array([], dtype=int64)] #