Ipu*_*ono 3 python arrays numpy
我正在生成一个随机矩阵
np.random.randint(2, size=(5, 3))
Run Code Online (Sandbox Code Playgroud)
输出类似
[0,1,0],
[1,0,0],
[1,1,1],
[1,0,1],
[0,0,0]
Run Code Online (Sandbox Code Playgroud)
如何在每行不能包含所有1'的条件下创建随机矩阵?也就是说,每一行可以是[1,0,0]或[0,0,0]或[1,1,0]或[1,0,1]或[0,0,1]或[0,1,0]或[0,1,1]但不能是[1,1,1]。
谢谢你的回答
这是一种有趣的方法:
rows = np.random.randint(7, size=(6, 1), dtype=np.uint8)
np.unpackbits(rows, axis=1)[:, -3:]
Run Code Online (Sandbox Code Playgroud)
本质上,您为每行选择整数0-6,即选择000-110作为二进制。7将是111(全1)。您只需要提取二进制数字作为列,然后获取最后3位数字(您的3列),因为输出的unpackbits是8位数字。
输出:
array([[1, 0, 1],
[1, 0, 0],
[1, 0, 0],
[1, 0, 0],
[0, 1, 1],
[0, 0, 0]], dtype=uint8)
Run Code Online (Sandbox Code Playgroud)