[Tutor] Extracting bits from an array
Peter Otten
__peter__ at web.de
Fri Apr 29 13:47:38 EDT 2016
Colin Ross wrote:
> Hello,
>
> I have an array that takes on the following form:
>
> x = [1000,1001,1011,1111]
But these are actually integers in decimal representation. You could treat
them as binary, but I recommend that you use integers in binary
representation to avoid confusion:
>>> x = [0b1000, 0b1001, 0b1011, 0b1111]
>>> x
[8, 9, 11, 15]
> The array elements are meant to be binary representation of integers.
>
> Goal: Access array elements and extract the first two bits.
Is the number of bits fixed to four? If so you can shift the bits to the
right:
>>> y = [v>>2 for v in x]
>>> y
[2, 2, 2, 3]
>>> y
[2, 2, 2, 3]
All that is left to do now is to convert the result to binary for display
purposes:
>>> for v in y: print "{:02b}".format(v)
...
10
10
10
11
> e.g. Final result would look something like this:
>
> x_new = [10,10,10,11]
>
> What I have tried:
>
> data_indices = range(4) # Set up array of values to loop over
>
> for idx in data_indices:
> f = x[idx] # Index into array of x values
> f_idx = f[:2] # Extract first two elements
This works for strings and sequences, but not for numbers.
> print f_idx
>
> I then receive the following error:
>
> IndexError: invalid index to scalar variable.
More information about the Tutor
mailing list