使用 Numpy 生成 N 维矩阵
Generate an N-dimensional matrix using Numpy
对于某个作业,我必须在 N
个随机变量上创建一个多元离散概率质量函数。我想通过创建一个数组 A
填充随机数来做到这一点,其中每个元素表示随机变量的联合概率。如果有 2 个随机变量,分别具有 i
和 j
可能值,这可以通过创建一个 (i*j)
Numpy 数组来完成,其中填充了随机数,其中总和 = 1。
然而,当引入具有 k
可能值的附加随机变量时,它变得更加困难。在这种情况下,我需要一个 i*j*k
Numpy 数组,再次填充总和等于 1 的随机数。
假设我得到了作为列表 [n1,n2,...,nN]
的结构(每个随机变量的可能值的数量),我如何从这里创建这样一个 N
维 Numpy 数组?
我找到了以下解决方案:
def randomArray(structure):
rand_array = np.random.randint(0, 100, size=(structure))
my_sum = np.sum(rand_array)
return rand_array/my_sum
其中 structure
是上述问题中定义的列表。
如果 l
是您的维度列表,您可以让
a = np.random.random(size=l)
a = a/a.sum()
对于某个作业,我必须在 N
个随机变量上创建一个多元离散概率质量函数。我想通过创建一个数组 A
填充随机数来做到这一点,其中每个元素表示随机变量的联合概率。如果有 2 个随机变量,分别具有 i
和 j
可能值,这可以通过创建一个 (i*j)
Numpy 数组来完成,其中填充了随机数,其中总和 = 1。
然而,当引入具有 k
可能值的附加随机变量时,它变得更加困难。在这种情况下,我需要一个 i*j*k
Numpy 数组,再次填充总和等于 1 的随机数。
假设我得到了作为列表 [n1,n2,...,nN]
的结构(每个随机变量的可能值的数量),我如何从这里创建这样一个 N
维 Numpy 数组?
我找到了以下解决方案:
def randomArray(structure):
rand_array = np.random.randint(0, 100, size=(structure))
my_sum = np.sum(rand_array)
return rand_array/my_sum
其中 structure
是上述问题中定义的列表。
如果 l
是您的维度列表,您可以让
a = np.random.random(size=l)
a = a/a.sum()