我正在尝试使用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个矩阵的操作时,我失败了-生成的所有矩阵都相同。
编辑:现在,我可以在循环中生成不同的矩阵了。
但是我仍然不知道如何保存它们以供以后的工作使用(例如:保存它们以便在以后的步骤中将它们相乘)?
答案 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循环将所有值相匹配的维度i
和x
相加。诀窍是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')