scipy.stats.uniform_direction#
- scipy.stats.uniform_direction = <scipy.stats._multivariate.uniform_direction_gen object>[源代码]#
一个向量值的均匀方向。
返回一个随机方向(单位向量)。dim 关键字指定空间的维度。
- 参数:
- dim标量
方向的维度。
- seed{None, int,
numpy.random.Generator
, 用于绘制随机变量。如果 seed 是 None,则使用 RandomState 单例。如果 seed 是一个 int,则使用一个新的
RandomState
实例,并使用 seed 作为种子。如果 seed 已经是RandomState
或Generator
实例,则使用该对象。默认为 None。
方法
rvs(dim=None, size=1, random_state=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]])