numpy.var()
方法沿指定的轴计算方差。
示例
import numpy as np
# create an array
array1= np.array([0, 1, 2, 3, 4, 5, 6, 7])
# calculate the variance of the array
variance = np.var(array1)
print(variance)
# Output: 5.25
var() 语法
numpy.var()
方法的语法是
numpy.var(array, axis = None, dtype = None, out = None, ddof = 0, keepdims = <no value>, where = <no value>)
var() 参数
numpy.var()
方法接受以下参数
array
- 包含所需方差的数字的数组(可以是array_like
)axis
(可选) - 计算方差的轴(int
或tuple of int
)dtype
(可选) - 用于计算方差的数据类型(datatype
)out
(可选) - 用于存放结果的输出数组(ndarray
)ddof
(可选) - 自由度增量(int
)keepdims
(可选) - 指定是否保留原始数组的形状(bool
)where
(可选) - 要包含在方差中的元素(array of bool
)
注意: numpy.var() 的默认值意味着以下内容
axis = None
- 计算整个数组的方差。dtype = None
- 对于整数,取float
;否则,方差与元素的ᵢ数据类型相同- 默认情况下,不传递
keepdims
和where
。
var() 返回值
numpy.var()
方法返回数组的方差。
示例 1:查找 ndArray 的方差
import numpy as np
# create an array
array1 = np.array([[[0, 1],
[2, 3]],
[[4, 5],
[6, 7]]])
# find the variance of the entire array
variance1 = np.var(array1)
# find the variance across axis 0
variance2 = np.var(array1, 0)
# find the variance across axis 0 and 1
variance3 = np.var(array1, (0, 1))
print('\nvariance of the entire array:', variance1)
print('\nvariance across axis 0:\n', variance2)
print('\nvariance across axis 0 and 1:', variance3)
输出
variance of the entire array: 5.25 variance across axis 0: [[4. 4.] [4. 4.]] variance across axis 0 and 1: [5. 5.]
示例 2:指定 ndArray 方差的数据类型
dtype
参数可用于控制输出数组的数据类型。
import numpy as np
array1 = np.array([[1, 2, 3],
[4, 5, 6]])
# by default int is converted to float
result1 = np.var(array1)
# get integer variance
result2 = np.var(array1, dtype = int)
print('Float variance:', result1)
print('Integer variance:', result2)
输出
Float variance: 2.9166666666666665 Integer variance: 3
注意:使用较低精度的 dtype
,例如 int
,可能导致精度损失。
示例 3:使用可选的 keepdims 参数
如果将 keepdims
设置为 True
,则结果方差数组的维数与原始数组相同。
import numpy as np
array1 = np.array([[1, 2, 3],
[4, 5, 6]])
# keepdims defaults to False
result1 = np.var(array1, axis = 0)
# pass keepdims as True
result2 = np.var(array1, axis = 0, keepdims = True)
print('Dimensions in original array:', arr.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.25 2.25 2.25] with dimensions 1 With keepdims: [[2.25 2.25 2.25]] with dimensions 2
示例 4:使用可选的 where 参数
可选参数 where
指定了要包含在方差中的元素。
import numpy as np
array1= np.array([[1, 2, 3],
[4, 5, 6]])
# take variance of the entire array
result1 = np.var(array1)
# variance of only even elements
result2 = np.var(array1, where = (array1% 2 == 0))
# variance of numbers greater than 3
result3 = np.var(array1, where = (array1 > 3))
print('variance of entire array:', result1)
print('variance of only even elements:', result2)
print('variance of numbers greater than 3:', result3)
输出
variance of entire array: 2.9166666666666665 variance of only even elements: 2.6666666666666665 variance of numbers greater than 3: 0.6666666666666666
示例 5:使用可选的 out 参数
out
参数允许我们指定一个输出数组来存储结果。
import numpy as np
array1 = np.array([[1, 2, 3],
[4, 5, 6]])
# create an output array
output = np.zeros(3)
# compute variance and store the result in the output array
np.var(array1, out = output, axis = 0)
print('variance:', output)
输出
variance: [2.25 2.25 2.25]
常见问题
什么是方差?
方差是与均值之差的平方的平均值。它是衡量给定数组中值围绕均值的散布程度的指标。
数学上,
var = sum((array1 - arr.mean())** 2) / (N - 1)
在 NumPy 中,
import numpy as np
array1 = np.array([2, 4, 6, 8, 10])
# calculate variance using np.var()
variance1 = np.var(array1)
# calculate variance without using np.var()
mean = np.mean(array1)
diff_squared = (array1 - mean) ** 2
variance2 = np.mean(diff_squared)
print('variance with np.var():', variance1)
print('variance without np.var():', variance2)
输出
variance with np.var(): 8.0 variance without np.var(): 8.0
numpy.var()
中的 ddof 参数用于什么?ddof(**自由度增量**)参数在 numpy.var() 中允许调整用于计算方差的除数。默认值为 **0**,对应于除以 **N**,即元素的数量。
在上面的 var 公式中,
var = sum((array1 - arr.mean())** 2) / (N - ddof)
让我们看一个例子。
import numpy as np
array1 = np.array([1, 2, 3, 4, 5])
# calculate variance with the default ddof = 0
variance0 = np.var(array1)
# calculate variance with ddof = 1
variance1 = np.var(array1, ddof = 1)
print('variance (default ddof = 0):', variance0)
print('variance (ddof = 1):', variance1)
输出
variance (default ddof = 0): 2.0 variance (ddof = 1): 2.5