scipy.stats.uniform_direction#

scipy.stats.uniform_direction = <scipy.stats._multivariate.uniform_direction_gen object>[源代码]#

一个向量值的均匀方向。

返回一个随机方向(单位向量)。dim 关键字指定空间的维度。

参数:
dim标量

方向的维度。

seed{None, int, numpy.random.Generator,

用于抽取随机变量。如果 seedNone,则使用 RandomState 单例。如果 seed 是一个整数,则使用一个新的 RandomState 实例,并使用 seed 进行播种。如果 seed 已经是 RandomStateGenerator 实例,则使用该对象。默认为 None

说明

此分布生成均匀分布在超球面表面的单位向量。这些可以解释为随机方向。例如,如果 dim 为 3,则将从 \(S^2\) 的表面采样 3D 向量。

参考

[1]

Marsaglia, G. (1972). “Choosing a Point from the Surface of a Sphere”. Annals of Mathematical Statistics. 43 (2): 645-646.

示例

>>> import numpy as np
>>> from scipy.stats import uniform_direction
>>> x = uniform_direction.rvs(3)
>>> np.linalg.norm(x)
1.

这生成一个随机方向,即 \(S^2\) 表面的一个向量。

或者,可以调用该对象(作为函数)以返回具有固定 dim 参数的冻结分布。在这里,我们创建一个 uniform_direction,其中 dim=3,并抽取 5 个观测值。然后,样本被排列成形状为 5x3 的数组。

>>> rng = np.random.default_rng()
>>> uniform_sphere_dist = uniform_direction(3)
>>> unit_vectors = uniform_sphere_dist.rvs(5, random_state=rng)
>>> unit_vectors
array([[ 0.56688642, -0.1332634 , -0.81294566],
       [-0.427126  , -0.74779278,  0.50830044],
       [ 0.3793989 ,  0.92346629,  0.05715323],
       [ 0.36428383, -0.92449076, -0.11231259],
       [-0.27733285,  0.94410968, -0.17816678]])

方法

rvs(dim=None, size=1, random_state=None)

抽取随机方向。