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
(可选) - 计算平均值的轴或轴(int
或tuple of int
)dtype
(可选) - 计算平均值时使用的数据类型(datatype
)out
(可选) - 用于存放结果的输出数组(ndarray
)keepdims
(可选) - 指定是否保留原始数组的形状(bool
)where
(可选) - 要包含在平均值中的元素(array of bool
)
注意:nanmean()
参数的默认值有以下含义:
axis = None
,即计算整个数组的平均值。dtype = None
,即对于整数,取float
类型。否则,计算出的平均值与数组元素的类型相同。out = None
,即没有输出数组,只有在将方法的返回值赋给变量名时,数组才会被存储。- 默认情况下,不传递
keepdims
和where
。
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
作为输出。