如何计算NumPy数组的模式
在这篇文章中,我们将讨论如何计算Numpy数组的模式。
模式指的是数组中重复最多的元素。我们可以通过以下方法从NumPy数组中找到模式。
方法1:使用scipy.stats软件包
让我们看看mode()函数的语法
语法 :
variable = stats.mode(array_variable)
注意:为了应用模式,我们需要创建一个数组。在python中,我们可以使用numpy包创建一个数组。所以我们首先需要使用numpy包创建一个数组,然后在该数组上应用mode()函数。让我们看看例子,以便更好地理解。
示例 1:
应用于一维阵列
# importing required packages
from scipy import stats as st
import numpy as np
# creating an array using array() method
abc = np.array([1, 1, 2, 2, 2, 3, 4, 5])
# applying mode operation on array and
# printing result
print(st.mode(abc))
输出 :
ModeResult(mode=array([2]), count=array([3]))
示例 2:
应用于二维阵列
# importing required modules
import numpy as np
from scipy import stats as st
# creating a 2-D array using numpy package
arr = np.array([[1, 2, 3, 4, 5],
[1, 2, 2, 2, 2],
[4, 5, 7, 9, 4],
[6, 7, 8, 9, 2],
[2, 3, 4, 8, 6]])
# applying mode operation and printing the
# result
print(st.mode(arr))
输出 :
ModeResult(mode=array([[1, 2, 2, 9, 2]]), count=array([[2, 2, 1, 2, 2]]))
方法2:使用统计模块。
与NumPy模块一样,统计模块也包含统计函数,如平均数、中位数、模式…. 等。因此,让我们看看一个使用统计模块的模式的例子。
示例 :
import statistics as st
import numpy as np
# create an 1 d array
arr1 = np.array([9, 8, 7, 6, 6, 6, 6, 5, 5, 4,
3, 2, 1, 1, 1, 1, 1, 1])
# display the mode
print(st.mode(arr1))
输出 :
1
方法3:使用用户定义的函数
这里我们没有使用任何预定义的函数来获取数列的模式。让我们看一个例子,演示如何在没有预定义函数的情况下计算模式。
示例 :
# creating a list
lst = [1, 2, 3, 4, 5, 6, 2, 3, 4, 5, 5, 5, 5]
# defining a function to calculate mode. It
# takes list variable as argument
def mode(lst):
# creating a dictionary
freq = {}
for i in lst:
# mapping each value of list to a
# dictionary
freq.setdefault(i, 0)
freq[i] += 1
# finding maximum value of dictionary
hf = max(freq.values())
# creating an empty list
hflst = []
# using for loop we are checking for most
# repeated value
for i, j in freq.items():
if j == hf:
hflst.append(i)
# returning the result
return hflst
# calling mode() function and passing list
# as argument
print(mode(lst))
输出 :
[5]