Home > Enterprise >  Python - issue with dimension of sequency
Python - issue with dimension of sequency

Time:10-26

I want to create in Python the following sequence of zero's and one's:

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

So there is first 1 zero and 4 one's, then 2 zeros and 3 one's, then 3 zeros and 2 ones and finally 4 zeros and 1 one. The final array is supposed to have dimension 20x1, but my code gives me the dimension 4x2. Does anyone know how I can fix this?

Here's my code:

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

Many thanks in advance!

CodePudding user response:

You can use 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]

CodePudding user response:

For each iteration you create a tuple of two things, hence the 4x2 result. You can bring it to the form you want by concatenating the array elements all together, but there is a pattern to your sequence; you can take advantage that it looks like a triangular matrix of 1s and 0s, which you can then flatten.

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

Output:

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