我使用itertools.combinations()
如下:更快的numpy解決方案,而不是itertools.combinations?
import itertools
import numpy as np
L = [1,2,3,4,5]
N = 3
output = np.array([a for a in itertools.combinations(L,N)]).T
其中產量我輸出我需要:
array([[1, 1, 1, 1, 1, 1, 2, 2, 2, 3],
[2, 2, 2, 3, 3, 4, 3, 3, 4, 4],
[3, 4, 5, 4, 5, 5, 4, 5, 5, 5]])
我反覆和過度使用在多環境中,該表達,我需要它儘可能快。
從this post我明白itertools
爲基礎的代碼是不是最快的解決方案,並使用numpy
可能是一種進步,但我不是在numpy
優化調度技巧不夠好,理解和適應形式,它有或迭代代碼拿出我自己的優化。
任何幫助將不勝感激。
編輯:
L
來源於熊貓數據幀,所以它可以也被看作是一個numpy的數組:
L = df.L.values
對於2D你必須'numpy.triu_in骰子「,但更高的尺寸更困難 –
['sklearn.utils.extmath.cartesian'](https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/utils/extmath。 PY#L557)? – blacksite
到目前爲止,從來沒有看過「scikit-learn」,我會閱讀它。 – Khris