繁体   English   中英

d维均匀分布的数据

[英]Uniformly distributed data in d dimensions

如何在Python中生成均匀分布的[-1,1] ^ d数据? 例如d是一个类似10的维度。

我知道如何生成均匀分布的数据,例如np.random.randn(N),但是维度问题让我很困惑。

假设各个坐标的独立性,则以下将在[-1, 1)^d生成一个随机点

np.random.random(d) * 2 - 1

以下将生成n观测值,其中每一行都是一个观测值

np.random.random((n, d)) * 2 - 1

正如已经指出的那样,randn产生正态分布的数(又名高斯)。 要获得均匀分布,您应该使用“统一”。

如果您只想一次采样10个均匀分布的数字,则可以使用:

import numpy as np
x = np.random.uniform(low=-1,high=1,size=10)

或者,如果您想一次生成很多(例如100个),则可以执行以下操作:

import numpy as np
X = np.random.uniform(low=-1,high=1,size=(100,10))

现在X [0],X [1],...的长度均为10。

您可以导入random模块并调用random.random以从[0,1)获得随机样本。 您可以将其加倍并减去1,以从[-1,1)中获得样本。

以这种方式绘制d值,并且元组将是从立方体[-1,1)^ d的均匀绘制。

没有numpy的:

[random.choice([-1,1]) for _ in range(N)]

可能有理由使用numpy的内部机制,或手动使用random()等。但是这些是实现细节,并且还与随机数生成如何分配操作系统提供的熵比特有关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM