如何在Python中生成均匀分布的[-1,1] ^ d数据?例如。 d是一个像10的维度。
我知道如何生成像np.random.randn(N)这样的均匀分布的数据,但维度事物让我很困惑。
答案 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>