NumPy nanmean()

numpy.nanmean() 方法沿指定的轴计算算术平均值,并忽略 **NaNs** (Not a Number)。

示例

import numpy as np

# create an array
array1 = np.array([0, np.nan, np.nan, 1, 2, 3, 4, 5, 6, 7])

# calculate the mean of the array mean1 = np.nanmean(array1)
print(mean1) # Output: 3.5

nanmean() 语法

numpy.nanmean() 方法的语法是:

numpy.nanmean(array, axis = None, dtype = None, out = None, keepdims = <no value>, where = <no value>)

nanmean() 参数

numpy.nanmean() 方法接受以下参数:

  • array - 包含需要计算平均值的数字的数组(可以是 array_like
  • axis(可选) - 计算平均值的轴或轴(inttuple of int
  • dtype(可选) - 计算平均值时使用的数据类型(datatype
  • out (可选) - 用于存放结果的输出数组(ndarray
  • keepdims (可选) - 指定是否保留原始数组的形状(bool
  • where(可选) - 要包含在平均值中的元素(array of bool

注意nanmean() 参数的默认值有以下含义:

  • axis = None,即计算整个数组的平均值。
  • dtype = None,即对于整数,取 float 类型。否则,计算出的平均值与数组元素的类型相同。
  • out = None,即没有输出数组,只有在将方法的返回值赋给变量名时,数组才会被存储。
  • 默认情况下,不传递 keepdimswhere

nanmean() 返回值

numpy.nanmean() 方法返回数组的算术平均值,忽略 **NaNs**。


示例 1:计算 ndArray 的平均值

import numpy as np

# create an array
array1 = np.array([[[0, 1], 
                    [2, np.NaN]], 
                    
                    [[4, 5], 
                    [6, 7]]])

# find the mean of entire array mean1 = np.nanmean(array1) # find the mean across axis 0 mean2 = np.nanmean(array1, 0) # find the mean across axis 0 and 1 mean3 = np.nanmean(array1, (0, 1))
print('\nMean of the entire array:',mean1) print('\nMean across axis 0:\n',mean2) print('\nMean across axis 0 and 1:',mean3)

输出

Mean of the entire array: 3.5714285714285716

Mean across axis 0:
[[2. 3.]
 [4. 7.]]

Mean across axis 0 and 1: [3.         4.33333333]

示例 2:指定 ndArray 平均值的数据类型

dtype 参数可用于控制输出数组的数据类型。

import numpy as np

array1 = np.array([[1, np.nan, 3],
                [4, 5, 6]])

# by default int is converted to float result1 = np.nanmean(array1) # get float32 mean result2 = np.nanmean(array1, dtype = np.float32)
print('Float64 mean:', result1, 'with type', result1.dtype) print('Float32 mean:', result2, 'with type', result2.dtype)

输出

Float64 mean: 3.8 with type float64
Float32 mean: 3.8 with type float32

注意:使用较低精度的 dtype 可能导致精度损失。


示例 3:使用可选的 keepdims 参数

如果将 keepdims 设置为 True,则结果平均数组的维度与原始数组的维度相同。

import numpy as np

array1 = np.array([[1, np.nan, 3],
                [4, 5, np.nan]])

# keepdims defaults to False result1 = np.nanmean(array1, axis = 0) # pass keepdims as True result2 = np.nanmean(array1, axis = 0, keepdims = True)
print('Dimensions in original array:', array1.ndim) print('Without keepdims:', result1, 'with dimensions', result1.ndim) print('With keepdims:', result2, 'with dimensions', result2.ndim)

输出

Dimensions in original array: 2
Without keepdims: [2.5 5.  3. ] with dimensions 1
With keepdims: [[2.5 5.  3. ]] with dimensions 2

示例 4:使用可选的 where 参数

可选参数 where 指定要包含在平均值计算中的元素。

import numpy as np

array1 = np.array([[1, 2, 3, np.nan],
                [np.nan, 4, 5, 6]])

# take mean of entire array result1 = np.nanmean(array1) # mean of only even elements result2 = np.nanmean(array1, where = (array1 % 2 == 0)) # mean of numbers greater than 3 result3 = np.nanmean(array1, where = (array1 > 3))
print('Mean of entire array:', result1) print('Mean of only even elements:', result2) print('Mean of numbers greater than 3:', result3)

输出

Mean of entire array: 3.5
Mean of only even elements: 4.0
Mean of  numbers greater than 3: 5.0

示例 5:使用可选的 out 参数

out 参数允许指定一个输出数组,结果将存储在该数组中。

import numpy as np

array1 = np.array([[1, 2, 3, np.nan],
                [4, 5, 6, np.nan]])

# create an output array
output = np.zeros(4)

# compute mean and store the result in the output array np.mean(array1, out = output, axis = 0)
print('Mean:', output)

输出

Mean: [2.5 3.5 4.5 nan]

注意:仅当所有元素都是 nan 时,nanmean() 才返回 nan 作为输出。

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战