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

Python在for循环中生成多个随机矩阵,python,numpy,for-loop,matrix,random,Python,Numpy,For Loop,Matrix,Random,我正在尝试使用for循环生成100个随机列随机矩阵并保存它们 下面的代码是生成单个随机列的随机矩阵 将numpy作为np导入 随机输入 对于100范围内的x: a=2 sto=np.identity2 sto=sto+np.random.uniformlow=0.2,high=0.5,size=a,a sto=sto/sto.sumaxis=0,keepdims=1 打印 当我尝试用for循环实现生成100个矩阵的操作时,我失败了——生成的所有矩阵都是相同的 编辑:我现在可以在循环中生成不同的矩

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

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

将numpy作为np导入 随机输入 对于100范围内的x: a=2 sto=np.identity2 sto=sto+np.random.uniformlow=0.2,high=0.5,size=a,a sto=sto/sto.sumaxis=0,keepdims=1 打印 当我尝试用for循环实现生成100个矩阵的操作时,我失败了——生成的所有矩阵都是相同的

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


但我仍然不知道如何将它们全部保存起来,以便在以后的工作中使用,例如:保存它们以便在以后的步骤中将其中一些相乘?

我不确定这是否是您要查找的内容,但基本上我创建了一个名为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)

我不确定你对结果的预期,但我认为你不需要一个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循环将i和x的匹配维度中的所有值相加。诀窍在于expand_dims方法创建一个虚拟维度,使其只能有一个不匹配的维度等于1。然后,可以在两个阵列之间执行这些操作。第二个扩展dims也有类似的作用,但在不同的维度上。最后,如果希望将其作为列表,可以将其转换为包含100个数组的列表:

out = list(out)

为什么不把它们保存在硬盘上呢

将numpy作为np导入 随机矩阵=np.random.rand100,2,2 np.保存'random_matrix.npy',random_matrix 随机矩阵加载=np.load'random矩阵.npy'
我在代码中没有看到任何for循环。你能给我看看吗?对不起,我刚编辑过。我想我通过一次又一次地生成相同的矩阵解决了这个问题:现在生成的矩阵彼此不同。但我仍然有保存它们的问题。将它们附加到列表中。我尝试了。我基本上失败了,我生成了不同的列表。