我有兩個矩陣(或更好的2D numpy陣列),A
和B
,列數相同(當然,行數,但我只是將兩個矩陣切成兩列),但行數不同。檢查矩陣的每一行是否在另一個矩陣中[Python]
我想檢查A
中的每一行是否在B
以及B
中正確的行索引是什麼。其實,我自己用的是常規的循環,即
for r in range(A.shape[0]):
idx=numpy.where(numpy.all(B[:,[0,1]]==A[r,[1,2]],axis=1))
idx=idx[0][0]
我如果有一些更聰明的方法來做到這一點,不知道使用索引方法,避免循環可能。我知道numpy的in1d
,但它只適用於1D陣列。
對於熟悉Matlab的讀者,當'rows'
選項被觸發時,我正在尋找ismember()
行爲。
有什麼輸出格式? – Divakar
@Divakar所需的輸出,如果可能的話,應該是一個數組(或列表),其中'*'第*行的行索引包含'A'的第*行*行。例如'[1,5,4]'的輸出列表意味着在'B'的第一行中找到'A'的第一行,在'B'的第五行中找到'A'的第二行在'B'的第四行找到第三行'A'。不過,我清楚地知道,在Python中,索引從0開始。 – Alessiox