d维中均匀分布的数据

时间:2011-10-12 00:15:04

标签: python numpy machine-learning scipy

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

我知道如何生成像np.random.randn(N)这样的均匀分布的数据,但维度事物让我很困惑。

4 个答案:

答案 0 :(得分:7)

假设各个坐标的独立性,则以下内容将在[-1, 1)^d

中生成随机点
np.random.random(d) * 2 - 1

以下将生成n个观察结果,其中每一行都是观察

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

答案 1 :(得分:6)

正如已经指出的,randn产生正态分布数(又称高斯数)。为了统一分配,你应该使用“uniform”。

如果您只想在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个长度。

答案 2 :(得分:2)

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

以这种方式绘制d值,元组将是立方体[-1,1)^ d的统一绘制。

答案 3 :(得分:-1)

没有numpy:

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

可能有理由使用numpy的内部机制,或者手动使用random()等。但这些是实现细节,也与随机数生成日期如何操作系统提供的熵相关。< / p>