Python在for循环中生成多个随机矩阵

时间:2019-06-30 00:44:42

标签: python numpy for-loop matrix random

我正在尝试使用for循环生成100个随机列随机矩阵并将其保存。

下面的代码是生成一个随机列随机矩阵。

import numpy as np
import random

For x in range(100):
    a = 2
    sto = np.identity(2)
    sto = sto + np.random.uniform(low=0.2, high=0.5, size=(a, a))
    sto = sto / sto.sum(axis=0, keepdims=1)
    print(sto)

当我尝试实现通过for循环生成100个矩阵的操作时,我失败了-生成的所有矩阵都相同。

编辑:现在,我可以在循环中生成不同的矩阵了。

但是我仍然不知道如何保存它们以供以后的工作使用(例如:保存它们以便在以后的步骤中将它们相乘)?

3 个答案:

答案 0 :(得分:1)

我不确定这是否是您要查找的内容,但是基本上我创建了一个名为sto1的列表,以便您可以在代码的后续部分中访问它。

import numpy as np
import random

sto1 = []
for x in range(100):
    a = 2
    sto = np.identity(2)
    sto = sto + np.random.uniform(low=0.2, high=0.5, size=(a, a))
    sto = sto / sto.sum(axis=0, keepdims=1)
    sto1.append(sto)
print(sto1)

答案 1 :(得分:0)

我不确定您期望得到什么,但是我认为您不需要for循环。

这是我的解决方法:

a = 2
i = np.expand_dims(np.eye(a), 0)
x = np.random.uniform(low=0.2, high=0.5, size=(100, a, a))
s = i + x
out = s / np.expand_dims(s.sum(1), 1)

实际上,在内部100循环将所有值相匹配的维度ix相加。诀窍是expand_dims方法创建一个虚拟维,使其只能具有一个等于1的不匹配维。然后,可以在两个数组之间进行这些操作。第二个expand_dims的角色也相似,但维度不同。最后,如果要将其作为列表,则可以将其转换为100个数组的列表:

out = list(out)

答案 2 :(得分:0)

为什么不将它们保存在硬盘驱动器上?

import numpy as np

random_matrices = np.random.rand(100,2,2)

np.save('random_matrices.npy', random_matrices)

random_matrices_loaded = np.load('random_matrices.npy')