Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在多维数组的每一行中找到最常出现的元素?_Python_Python 2.7 - Fatal编程技术网

Python 如何在多维数组的每一行中找到最常出现的元素?

Python 如何在多维数组的每一行中找到最常出现的元素?,python,python-2.7,Python,Python 2.7,假设我有一个数组: 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]]) 只需循环遍历数组的每个元素,在这种情况下,每个元素是[1,0,0,1,0,0,1]和[1,1,1,0,0,1,1] for myarr in a: 循环通过myarr的每个元素: for myele in myarr 使用dict记录发生的次数: mydict[mye

假设我有一个数组:

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]])

只需循环遍历数组的每个元素,在这种情况下,每个元素是[1,0,0,1,0,0,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后,将mymost附加到结果中:

mymosts.append(mymost)
那么:

b = [np.bincount(x).argmax() for x in a]
或者获取您正在显示的格式:

b = ([[np.bincount(x).argmax()] for x in a])
如果您希望使用计数器处理浮动,那么使用计数器将是最佳的标准库解决方案

from collections import Counter
b = ([[Counter(x).most_common()[0][0]] for x in a])
如果有可用的scipy,则可以使用scipy.stats.mode:

注意,从文档中:

如果有多个这样的值,则只返回第一个值。 还将返回模式存储箱的存储箱计数


谢谢你,尤金。。但是我正在工作的阵列非常大。。。我用这个例子来解释我的问题,这是如何改变方法的?你的记忆有限吗?你想要一个快速算法吗?在这种情况下它是有效的。但对于更大的数组,它显示-TypeError:无法根据规则“safe”@user3718501将数组数据从dtype“float64”强制转换为dtype“int64”,这是因为np.bincount用于非负整数数组。。。就像你在问题中提到的那样。
>>> 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.]])