d维度中的均匀分布数据
我该如何在Python中生成一个均匀分布在[-1,1]^d范围内的数据呢?比如说,d是一个维度,比如10。
我知道怎么生成均匀分布的数据,比如用np.random.randn(N),但是维度这个概念让我很困惑。
4 个回答
2
你可以导入一个叫做 random
的模块,然后使用 random.random
来获取一个在 [0, 1) 范围内的随机数。你可以把这个数乘以2,然后减去1,这样就能得到一个在 [-1, 1) 范围内的随机数。
用这种方法生成 d 个值,得到的结果就是从立方体 [-1, 1)^d 中均匀抽取的随机数。
8
正如之前提到的,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个数字。
8
假设每个坐标之间是独立的,那么下面的代码可以生成一个在 [-1, 1)^d
范围内的随机点。
np.random.random(d) * 2 - 1
接下来这段代码会生成 n
个观测值,每一行代表一个观测值。
np.random.random((n, d)) * 2 - 1