3
創建一個從元組的名單列表矩陣我的元組list1
使用列表理解
list1 = [[('a',0.01),('b',0.23),('c',1e-7)],
[('a',0.91),('b',0.067),('c',0.38)]]
的列表清單,我想創建一個numpy的矩陣,其中每行是一個元組中的第二個值list1
。因此,矩陣,讓我們把它叫做A
,將有形式
A = [[0.01,0.23,1e-7],[0.91,0.067,0.38]]
A.shape
>>> (2,3)
到目前爲止,我已經設法在一個緩慢而低效的方式
A = []
for i in range(len(list1)):
A.append(np.array([v for k,v in list1[i]]))
A = np.array(A)
我怎樣才能做到這一點使用列表解析來實現這一目標?
真正的好。這是令人印象深刻的可以在numpy簡潔寫作的操作數量。 –
感謝@ayhan,確實運行良好..奇怪的是,你的第一個解決方案比你的第二個(更好的?)解決方案工作得更快。我有一種感覺,它與我的數據結構有關 - 我的元組列表實際上是一個使用[gensim](https://radimrehurek.com/gensim/models/ldamodel.html)的lda模型,而你在每個列表上調用的方式是'lda [corpus [i]]',它打印列表'i'的元組。 – killerT2333
@KillianTattan是的,從某種意義上說它更好,因爲它是一種直接的numpy解決方案,所以對於矢量而言它更具慣用性。 numpy不能很好地處理對象dtypes,所以緩慢可能是因爲這個原因。我懷疑如果你有一個元組列表的列表,其值是數字,numpy解決方案將勝過列表理解。 – ayhan