簡體   English   中英

在稀疏lil_matrix(Scipy / Python)中查找最大值及其索引

[英]Finding maximum value and their indices in a sparse lil_matrix (Scipy/Python)

在Scipy稀疏lil_matrix對象中找到最大值及其對應的行和列索引的最佳方法是什么? 我可以使用itertools.izip遍歷非零條目 ,但有什么更好的嗎? 我覺得我在這里遺漏了一些明顯的東西......

您可以轉換為COO格式,然后使用datarowcol屬性。

例如,假設LIL矩陣是x 這是獲取最大值及其行和列的一種方法:

In [41]: x
Out[41]: 
<1000x1000 sparse matrix of type '<type 'numpy.float64'>'
    with 1999 stored elements in LInked List format>

In [42]: y = x.tocoo()

In [43]: k = y.data.argmax()

In [44]: maxval = y.data[k]

In [45]: maxrow = y.row[k]

In [46]: maxcol = y.col[k]

注意:上面的代碼中有兩個錯誤:

  • 如果所有非零值都為負,則會找到最大的負值。 但在這種情況下,正確答案應為0。
  • 如果沒有非零值,則行k = y.data.argmax()將引發異常,因為y.data是一個空數組。

如果在您的應用程序中不能發生這些情況,則可以忽略這些錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM