NumPy var()

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 (可选) - 计算方差的轴(inttuple of int
  • dtype (可选) - 用于计算方差的数据类型(datatype
  • out (可选) - 用于存放结果的输出数组(ndarray
  • ddof (可选) - 自由度增量(int
  • keepdims (可选) - 指定是否保留原始数组的形状(bool
  • where (可选) - 要包含在方差中的元素(array of bool

注意: numpy.var() 的默认值意味着以下内容

  • axis = None - 计算整个数组的方差。
    • dtype = None - 对于整数,取 float;否则,方差与元素的ᵢ数据类型相同
    • 默认情况下,不传递 keepdimswhere

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

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

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

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