如何进行 NxN 矩阵的均值、标准差和众数统计

Posted

技术标签:

【中文标题】如何进行 NxN 矩阵的均值、标准差和众数统计【英文标题】:How to make the mean, standard deviation and mode statistics of an NxN matrix 【发布时间】:2021-08-17 18:51:41 【问题描述】:

我想知道如何做 NxN 矩阵的平均值、标准差和众数统计。

有人可以建议如何在 python 中执行此操作吗?

【问题讨论】:

在向其他人寻求帮助之前,您可以在谷歌上搜索关键字,例如“python numpy 数组均值标准差模式统计”。你得到什么结果?点击链接,找到相关的方法/函数,然后尝试编写一些代码。 如果你还在苦苦挣扎,这里是numpy数组的主要统计方法的链接numpy.org/doc/stable/reference/routines.statistics.html 【参考方案1】:

您可以通过计算出现次数并返回最大值来获取模式。 平均值是总和除以计数。 对于 stddev,您可以将平方距离相加,将其除以计数减 1,然后取平方根。

#! /usr/env python

import math

matrix = []
for i in range(9):
    matrix.append([])
    for x in range(9):
        matrix[i].append(i+x*2)

mode = 
avg = 0
stddev = 0
count = 0
for i in range(len(matrix)):
    for x in range(len(matrix[i])):
        avg+=matrix[i][x]
        if matrix[i][x] in mode:
            mode[matrix[i][x]]+=1
        else:
            mode[matrix[i][x]]=1
        count+=1
maxcount = max(mode,key=mode.get)
avg /= count
# if you calculate the count from the dimensions...
# avg /= len(matrix)*len(matrix[0])
print(f'Mode = maxcount with mode[maxcount] occurrences')
print(f'Avg = avg')

# get the std dev
for i in range(len(matrix)):
    for x in range(len(matrix[i])):
        stddev += (matrix[i][x]-avg) ** 2
stddev /= count-1
print(f'Stddev = math.sqrt(stddev)')

【讨论】:

【参考方案2】:

正如评论中指出的,这很容易通过搜索找到。

scipy 库为所有这些提供函数,无论是整个数组还是指定轴。 scipy.stats.describe 将同时给出均值和方差,标准差很容易从方差中计算出来。对于模式使用 scipy.stats.mode

对于均值和标准差,分别有 numpy.meannumpy.std

【讨论】:

以上是关于如何进行 NxN 矩阵的均值、标准差和众数统计的主要内容,如果未能解决你的问题,请参考以下文章

Python | Numpy:详解计算矩阵的均值和标准差

Python | Numpy:详解计算矩阵的均值和标准差

matlab图像的统计特性(均值标准差方差相关系数等高线)

matlab图像的统计特性(均值标准差方差相关系数等高线)

matlab图像的统计特性(均值标准差方差相关系数等高线)

matlab图像的统计特性(均值标准差方差相关系数等高线)