我有一个矩阵,我需要找到最大元素和它的数量。如何在没有操作符的情况下重写它(用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()
函数是用来寻找序列中最大的项目。但我们希望它的目标值是 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)