这是一个所有麻烦的解决方案 – 并不一定比Python的迭代更好.它仍然要看所有的组合.
In [53]: np.array(np.all((x[:,None,:]==y[None,:,:]),axis=-1).nonzero()).T.tolist()
Out[53]: [[0, 4], [2, 1], [3, 2], [4, 3]]
中间阵列是(5,5,4). np.all将其减少到:
array([[False, False, False, False, True],
[False, False, False, False, False],
[False, True, False, False, False],
[False, False, True, False, False],
[False, False, False, True, False]], dtype=bool)
其余的只是提取这个是True的索引
在原油测试中,这次是47.8美元;另一个答案与L1字典在38.3我们;另有三分之一的双循环在496我们.