【发布时间】:2020-01-25 22:03:20
【问题描述】:
我有一个 20x20 二维数组,我想从中获取每列出现次数最多的值(不包括零),即获得主要投票的值。
我可以为这样的单个列做到这一点:
: np.unique(p[:,0][p[:,0] != 0],return_counts=True)
: (array([ 3, 21], dtype=int16), array([1, 3]))
: nums, cnts = np.unique(p[:,0][ p[:,0] != 0 ],return_counts=True)
: nums[cnts.argmax()]
: 21
为了完整起见,我们可以将早先提出的方法扩展到二维数组的基于循环的解决方案 -
# p is 2D input array
for i in range(p.shape[1]):
nums, cnts = np.unique(p[:,i][ p[:,i] != 0 ],return_counts=True)
output_per_col = nums[cnts.argmax()]
如何在不使用 for 循环的情况下对所有列执行此操作?
【问题讨论】:
-
里面都是正数吗?
-
请按照您创建此帐户时的建议遵循帮助文档中的发布指南。 On topic、how to ask 和 ...the perfect question 在此处申请。 StackOverflow 不是设计、编码、研究或教程资源。但是,如果您按照您在网上找到的任何资源,做出诚实的解决方案尝试,并遇到问题,您就会有一个很好的例子可以发布。
-
如果您在浏览器中搜索“numpy vector usage”,您会找到比我们在此处管理的更能解释这一点的参考资料。
-
是的,他们都是积极的
-
发布的解决方案对您有用吗?