很難解釋我正在用單詞做什麼,所以這裏是一個例子。生成一個將一個數組索引到另一個數組中的布爾掩碼
比方說,我們有以下輸入:
In [76]: x
Out[76]:
0 a
1 a
2 c
3 a
4 b
In [77]: z
Out[77]: ['a', 'b', 'c', 'd', 'e']
我想:
In [78]: ii
Out[78]:
array([[1, 0, 0, 0, 0],
[1, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[1, 0, 0, 0, 0],
[0, 1, 0, 0, 0]])
ii
是布爾口罩的數組,它可以應用到z
找回原來的x
。
我目前的解決方案是寫它轉換z
到list
並使用index
方法獲取該元素的索引在z
,然後生成零的行除了其中存在一個索引的函數。該函數應用於每行x
以獲得所需的結果。
所以,什麼是你的問題?寫這個函數?當然,像'np.choose([「abcde」.index(i)for i in x],「abcde」)'不適合你? –
嗯,當我運行你的行時,我得到'array(['a','a','c','a','b'],dtype ='| S1')'。我想要的是'['a','a','c','a','b']'的掩碼(5個布爾元素的列表)。這是否更清楚? –
你正在尋找一個更快的方式,或者只是簡短的類型,如:np.array([[j = i] for i in x],dtype = int) –