【发布时间】:2017-09-07 18:15:52
【问题描述】:
我有一个单热向量的 numpy 数组。我想找到这些 one-hot 向量的模式。请注意,这并不等同于在值上找到模式。
例如对于
x = [[0,0,0,1],
[0,0,0,1],
[0,0,1,0],
[0,1,0,0],
[1,0,0,0]]
assert vector_mode(x) == [0,0,0,1]
assert scipy.stats.mode(x) == [0,0,0,0]
使用 numpy/scipy 最有效的方法是什么?
【问题讨论】:
-
为什么要多出一组括号?
-
我希望我的列表括号对齐。 =c)
-
你可能最终不得不lexsort它并找到最长的相等行。
-
这里的关键是这些是 one-hot 向量。让生活更轻松。
-
当我们谈到这个话题时,我想指出
scipy.stats.mode有一个 loop in it 将数组中找到的每个值与整个数组进行比较,这可能会导致非常糟糕的结果具有许多不同值的数组的性能。例如,scipy.stats.mode(range(10**5))速度非常慢。