我怎样才能以有效的方式完成这个numpy数组操作?

时间:2012-11-19 23:29:17

标签: python numpy

我是python的新手。

如果我有一个(m×n)数组,我怎样才能找到哪个列具有特定值的最大重复次数,例如。 1?是否有任何简单的操作,而不是编写迭代循环来执行此操作。

1 个答案:

答案 0 :(得分:2)

欢迎使用python和numpy。您可以通过首先检查数组中的哪些值为1,然后沿每列计数并最终获取argmax来获得具有最多1s的列。在代码中,它看起来像这样:

>>> import numpy as np
>>> (m, n) = (4, 5)
>>> a = np.zeros((m, n))
>>> a[2, 3] = 1.
>>>
>>> a_eq_1 = a == 1
>>> repetitions = a_eq_1.sum(axis=0)
>>> np.argmax(repetitions)
3

或更紧凑:

>>> np.argmax((a == 1).sum(axis=0))
3