Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在矩阵数组中生成随机的1和0?_Python - Fatal编程技术网

Python 如何在矩阵数组中生成随机的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

我有一个矩阵,目前只填充了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 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