假设我们有一个如下的数组:
第一个月
并且我们想要找到沿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。直方图是不是很矢量化的方法,我们必须使它沿着每一个轴。
1条答案
按热度按时间dgsult0t1#
也许这样会更快: