如何在 python 中有效地創建這種交替模式的二進制表?1 重復 4 個元素,然后 0 重復另外 4 個元素,依此類推,如下所示:
101010
101010
101010
101010
010101
010101
010101
010101
101010
101010
...
uj5u.com熱心網友回復:
考慮使用numpy.tile
import numpy as np
one_zero = np.tile([1, 0], 12).reshape(4, 6)
"""
array([[1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0]])
"""
zero_one = np.tile([0, 1], 12).reshape(4, 6)
"""
array([[0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1]])
"""
ar = np.tile([[1, 0], [0, 1]], 12).reshape(8, 6)
"""
array([[1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0],
[1, 0, 1, 0, 1, 0],
[0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1],
[0, 1, 0, 1, 0, 1]])
"""
uj5u.com熱心網友回復:
使用串列理解:
table = [('101010', '010101')[x//4%2 == 1] for x in range(100)]
您可能更喜歡使用 0b101010 和 0b010101 而不是字串,但列印的結果將是 42 和 21。
uj5u.com熱心網友回復:
您也可以使用np.resize, np.repeat, 和np.eye為此:
np.resize(np.repeat(np.eye(2), 4, axis = 0), (1000, 6))
np.resize獲取一個圖案并將其沿各個方向復制到目標尺寸。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/464613.html
