Python - 序列维度问题

Python - issue with dimension of sequency

我想在 Python 中创建以下 0 和 1 序列:

{0, 1,1,1,1, 0,0, 1,1,1, 0,0,0, 1,1, 0,0,0,0, 1}

因此首先是 1 个零和 4 个一,然后是 2 个零和 3 个一,然后是 3 个零和 2 个一,最后是 4 个零和 1 个一。最终数组的尺寸应该是 20x1,但我的代码给了我 4x2 的尺寸。有谁知道我该如何解决这个问题?

这是我的代码:

import numpy as np
seq = [ (np.ones(n), np.zeros(5-n) ) for n in range(1,5)]

非常感谢!

对于每次迭代,您创建一个包含两个事物的元组,因此是 4x2 结果。您 可以 通过将数组元素连接在一起来将其变成您想要的形式,但是您的序列有一个模式;你可以利用它看起来像一个由 1 和 0 组成的三角矩阵,然后你可以将其展平。

n = 5
ones = np.ones((n, n), dtype=int)
seq = np.triu(ones)[1:].flatten()

输出:

array([0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1])

您可以使用 flatten:

import numpy as np

l = np.array([[0] * n + [1] * (5 - n) for n in range(1, 5)]).flatten()
print(l)
# >>> [0 1 1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1]