簡體   English   中英

python key=operator.itemgetter(1)) 如何工作?

[英]How works python key=operator.itemgetter(1))?

我有一個矩陣,我需要找到最大元素及其數量。 如何在沒有運算符(使用 for)的情況下重寫它?

    for j in range(size - 1):
        i, val = max(enumerate(copy[j::, j]), key=operator.itemgetter(1))
        copy = change_rows(copy, j, i)
        P = change_rows(P, j, i) 

實際上,也許您可以解釋一下這個字符串的含義?

i, val = max(enumerate(copy[j::, j]), key=operator.itemgetter(1))

讓我們分解這條線。

i, val = max(enumerate(copy[j::, j]), key=operator.itemgetter(1))

首先, enumerate()copy[j::,j]上創建一個迭代器,生成索引-值對。 例如,

>>> for i, val in enumerate("abcd"):
...     print(i, val)
...
0 a
1 b
2 c
3 d

接下來, max() function 用於查找序列中的最大項目。 但是我們希望它針對copy[j::,j]的值,而不是我們也從enumerate()獲得的索引。 指定key=operator.itemgetter(1)告訴max()查看(i,val)對並找到具有最大val的一對。

使用np.argmax()可能會更好,特別是因為val未使用。

>>> import numpy as np

>>> for j in range(size - 1):
...     i = np.argmax(copy[j::, j])    # Changed this line.
        copy = change_rows(copy, j, i)
        P = change_rows(P, j, i)

暫無
暫無

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

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