如何在Python中更改数组max

时间:2017-11-27 06:59:10

标签: python

我想更改列表的最大值,如下所示:

a = [2, 2, 4, 5]

max(a) = 10

print(a)

但始终如一:SyntaxError: can't assign to function call

有人知道如何更改最大值吗?

感谢大家的帮助!我想用另一个数字替换数组的最大值,这将是我的新最大值。

3 个答案:

答案 0 :(得分:2)

如果要更改数组的所有最大值,例如[1,2,5,5]到[1,2,new_max,new_max],则可以执行以下操作:

a = np.array([1, 2, 5, 5])
a[a == a.max()] = new_max

答案 1 :(得分:0)

Python没有一个函数可以告诉你最大元素的索引(而不是C ++ std::max_element或numpy argmax正在做什么),所以你需要:

  1. 使用mx = max(a)
  2. 查找最大值
  3. 找到最大值为ix = a.index(mx)
  4. 的索引
  5. 更改元素a[ix] = 10
  6. 您可以将这三个步骤合并为一行

    a[a.index(max(a))] = 10
    

    请注意,这不会确保在操作max(a)更改后...例如:

    a = [10, 30, 20, 30]
    a[a.index(max(a))] = 15
    # now a is [10, 15, 20, 30] and max is still 30
    

    如果要将所有最大元素更改为新值,则需要显式循环或使用理解

    mx = max(a)
    for i in range(len(a)):
        if a[i] == mx:
            a[i] = new_max
    

答案 2 :(得分:0)

假设a = [1,2,3,4]并且您想要将max更改为100

for i in range(len(a)):
    if a[i] == max(a):
        a[i] = 100