在Numpy中沿着给定轴出现频率最高的真实的(非整数)-有快速的方法吗?

up9lanfz  于 2023-01-02  发布在  其他
关注(0)|答案(1)|浏览(100)

假设我们有一个如下的数组:
第一个月
并且我们想要找到沿axis=0的最频繁元素。
粗略的方法是为每个dim构建一组直方图:hist = [np.histogram(x[:, i], bins=200) for i in range(x.shape[-1])]
将频率和值分为不同的变量:
freq, val = (np.array([o[0] for o in hist]).T, np.array([o[1] for o in hist]).T)
然后沿频率计算argmax:most_freq = np.argmax(freq, axis=0)
然后从val取值的对角线(以仅获得具有相同索引i = j的元素):np.diagonal(val[most_freq])
这里应该是大约[0., 0.]
如何使它更快,例如np。直方图是不是很矢量化的方法,我们必须使它沿着每一个轴。

dgsult0t

dgsult0t1#

也许这样会更快:

np.bincount(x).argmax()

相关问题