我有一个矩阵,当前仅填充1。如何使它填充随机的1和0?
var a = c.Resolve<MyInterface>(serviceKey: "implementationA");
var b = c.Resolve<MyInterface>(serviceKey: "implementationB");
输出:
matrix5x5 = [[1 for row in range (5)] for col in range (5)]
for row in matrix5x5:
for item in row:
print(item,end=" ")
print()
print("")
我想要类似的东西
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
我发现了有关使用1 0 0 1 0
0 1 1 1 1
1 0 1 0 1
1 1 0 0 1
0 1 1 1 1
的一些知识,但是我不知道如何更改当前代码以包括上述内容。
答案 0 :(得分:1)
如果您不介意使用numpy:
>>> import numpy as np
>>> np.random.randint(2, size=(5, 5))
array([[1, 0, 1, 0, 1],
[1, 0, 1, 0, 0],
[0, 0, 0, 1, 0],
[1, 0, 0, 0, 1],
[0, 1, 0, 0, 1]])
Numpy数组支持大多数涉及索引和迭代的列表操作,如果您真的很在意,可以将其转换为列表:
>>> np.random.randint(2, size=(5, 5)).tolist()
[[1, 0, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 1, 0, 0], [1, 0, 1, 1, 1], [1, 0, 1, 0, 0]]
并且,如果出于某种奇怪的原因,您100%坚持使用香草Python,只需使用random
模块和列表理解:
>>> import random
>>> [[random.randint(0,1) for j in range (5)] for i in range (5)]
[[0, 1, 0, 1, 1], [0, 1, 1, 1, 0], [0, 0, 1, 0, 1], [0, 0, 0, 0, 1], [1, 1, 1, 1, 1]]
答案 1 :(得分:1)
使用random
包(而不是等效的numpy
)修改代码:
matrix5x5 = [[random.randint(0,1) for _ in range(5)] for _ in range(5)]
for row in matrix5x5:
for item in row:
print(item,end=" ")
print()
print("")
0 1 0 0 1
0 1 0 1 0
0 0 1 1 0
0 0 0 1 0
1 0 0 1 1
但老实说,numpy
使它变得更快,更简单!
答案 2 :(得分:0)
您可能想使用numpy。请执行以下操作:
import numpy as np
my_matrix = np.random.randint(2,size=(5,5))
这将创建一个随机的5 x 5矩阵,分别为0和1。