从数组中找到最大值

时间:2019-03-21 11:29:43

标签: python-3.x numpy jupyter-notebook

  1. 编写代码以查找并打印出频率最高的状态。 状态名称和频率都需要打印出来。

    [[''NSW''87']  ['QLD''49']  ['SA''14']  ['VIC''54']  ['WA''19']]

我有这条信息,必须提取频率最高的状态87。 我是NumPy的新手,请指导。

1 个答案:

答案 0 :(得分:0)

不确定[['NSW' '87'] ['QLD' '49'] ['SA' '14'] ['VIC' '54'] ['WA' '19']]是什么,但是我认为您想说[['NSW', '87'], ['QLD', '49'], ['SA', '14'], ['VIC', '54'], ['WA', '19']]

因此,鉴于:

>>> l = [['NSW', '87'], ['QLD', '49'], ['SA', '14'], ['VIC', '54'], ['WA', '19']]

我们可以使用生成器表达式:

>>> highest = max(item[1] for item in l)
>>> (print(item) for item in l if item[1] == highest)
['NSW', '87']

或者:

>>> highest = max(item[1] for item in l)
>>> for item in l:
...    if item[1] == highest:
...        print(item)
['NSW', '87']

或使用zip

>>> keys, values = zip(*l)
>>> highest = max(values)
>>> print([keys[values.index(highest)], highest])
['NSW', '87']

使用timeit.timeit(并删除每个示例的print),我们得到以下值:

1.819037475     # First Example
1.648459721     # Second Example
1.406044623     # Third Example

您应该使用最后一个,它使用zip,因为它比其他的更快。