假设我有一个数组:
import numpy as np
a=np.array([[1,0,0,1,0,0,0,1],[1,1,1,1,0,0,1,1]])
如何计算具有最多值的另一个数组b
?即
b=([[0],[1]])
答案 0 :(得分:2)
如果您有scipy
,则可以使用scipy.stats.mode
:
>>> a = np.array([[1,0,0,1,0,0,0,1],[1,1,1,1,0,0,1,1]])
>>> import scipy.stats
>>> most, mostcc = scipy.stats.mode(a, axis=1)
>>> most
array([[ 0.],
[ 1.]])
>>> mostcc
array([[ 5.],
[ 6.]])
请注意,来自文档:
如果有多个此类值,则仅返回第一个值。 还返回了模态箱的bin计数。
答案 1 :(得分:0)
只需循环遍历数组的每个元素,在这种情况下,每个元素都是[1,0,0,1,0,0,0,1]和[1,1,1,1,0,0,1 ,1]。
for myarr in a:
循环遍历myarr的每个元素:
for myele in myarr
使用dict跟踪发生的次数:
mydict[myele] += 1
跟踪最高值:
mymost = myele if mydict[myele] > mymost
在完成myarr后,请将结果添加到您的结果中:
mymosts.append(mymost)
答案 2 :(得分:0)
怎么样:
b = [np.bincount(x).argmax() for x in a]
或获取您显示的格式:
b = ([[np.bincount(x).argmax()] for x in a])
如果您希望使用Counter
使用浮点数,那将是最好的标准库解决方案。
from collections import Counter
b = ([[Counter(x).most_common()[0][0]] for x in a])