我能够按以下方式逐元素计算多个列表/数组的总和
sum([np.array([1,2,3,4,5]), np.array([1,2,3,4,5])]) = array([ 2, 4, 6, 8, 10])
我想对阵列中每个元素的模式执行类似的操作,并获得预期的结果:
mode([np.array([1,2,3,4,5]), np.array([1,2,3,4,5])]) = array([ 1, 2, 3, 4, 5]
)
在没有单一模式的情况下,我想随机选择其中一个数组中的元素作为输出,如下所示:
mode([np.array([0,2,3,4,0]), np.array([1,2,9,4,5])]) = array([ 1, 2, 9, 4, 0]
)
最后,我希望能够跨任意数量的等长数组执行此操作
注意:我尝试使用统计库模式,但出现以下错误:
>>> mode([np.array([1,2,3,4,5]), np.array([1,2,3,4,5])])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/anaconda3/lib/python3.7/statistics.py", line 501, in mode
table = _counts(data)
File "/anaconda3/lib/python3.7/statistics.py", line 252, in _counts
table = collections.Counter(iter(data)).most_common()
File "/anaconda3/lib/python3.7/collections/__init__.py", line 566, in __init__
self.update(*args, **kwds)
File "/anaconda3/lib/python3.7/collections/__init__.py", line 653, in update
_count_elements(self, iterable)
TypeError: unhashable type: 'numpy.ndarray'
当只使用一个列表时,它也会抛出一个错误
因此,我正在寻找实现这一目标的方法
一个关键要求是,阵列元素中模式的输出向量必须与每个向量的长度相同(我将把它输入混淆矩阵,以便与参考向量进行比较)
举两个例子:
两个来源:
使用
zip(*alist)
我们可以采用相应的“对”模式:mode
文档警告此错误scipy
版本将列表转换为二维数组;哪个stats.mode
代码是Python,因此可以对其进行研究。对于这样的轴选择,它显然会在列上迭代,在每个列上采用1d模式。因此,速度将与列表理解情况相当。但是StatsError
案件的处理是不同的但我们可以使用一点实用功能来处理错误情况:
列表理解时间是有利的:
您可以使用
scipy.stats.mode
找到模式。您还可以将多个numpy数组连接到单个数组中,然后将其馈送到模式scipy.stats.mode
的返回值是一个名为ModeResult
的双元组,它包括模式和值出现的次数要查找每列的模式,可以将阵列堆叠到二维阵列中,然后沿第一个轴查找模式
相关问题 更多 >
编程相关推荐