Python 如何在矩阵数组中生成随机的1和0?
我有一个矩阵,目前只填充了1。如何使它以随机1和0填充Python 如何在矩阵数组中生成随机的1和0?,python,Python,我有一个矩阵,目前只填充了1。如何使它以随机1和0填充 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 我想要像这样的东西: 10 0 1 1
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
我想要像这样的东西:
10
0 1 1 1 1
1 0 1 0 1
1 1 0 0 1
0 1 1 1 1
我发现了一些关于使用random.randint(0,1)的内容,但我不知道如何更改当前代码以包含上述内容。您可能想使用numpy。请执行以下操作:
import numpy as np
my_matrix = np.random.randint(2,size=(5,5))
这将创建一个包含0和1的随机5乘5矩阵。如果您不介意使用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]]
使用
random
软件包(而不是numpy
等效软件包)修改代码:
但老实说,
numpy
让它变得更快更简单 你知道这段代码的哪一部分指定了矩阵中每个元素的值吗?一旦你这样做了,用你找到的计算一个随机数的表达式替换它。否。这将给出所有的0.Oops。修正了。谢谢:)但是没有numpy还有其他方法吗?@JonathanRoss我编辑了一个香草解决方案。再次谢谢你haha@JonathanRoss没问题。请记住接受您认为最有帮助的答案:。
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