我有一個向量布爾型,維數爲1 * n
,假設爲n = 6
。向量化的方法來將1維布爾數組更改爲2維,python 3
vec = [1, 0, 1, 0, 0, 1]
我想將其更改爲n * 2
矩陣。對於vec
中的每個元素,如果它是1
,那麼在矩陣中對應的行應該是[1, 0]
;如果是0
,那麼相應的行應該是[0, 1]
。因此,所產生的基質應
matr = [[1, 0],
[0, 1],
[1, 0],
[0, 1],
[0, 1],
[1, 0]]
要轉換到矩陣向量,我需要一個優雅的量化方法(避免for-loops
),因爲在實際情況下n
會比6
大得多。 此轉換的原因是機器學習分類purppose。 vec
指的是binary classification
,而matr將用於categorical classification
。也許這些信息可以使我的問題更具體。
我使用Python 3,numpy/scipy,sklearn。
任何人都可以幫助我嗎?謝謝。
您可以消除對'stack'需要的東西,如' vec [:,None]^[0,1]'。 –
@沃倫夢幻般的想法......它也來自一個簡單的時間〜約50%的速度 - 你想發佈一個答案嗎? –
@aura我會選擇沃倫的方法。它不一定很明顯,但它要快得多,並能產生你想要的結果。 –