Here is one way to do this, but this is probably not the most efficient method.
For demonstration, I will use 8-bit integers, but it will also work with your 1024-bit integers.
In [28]: bs = [0b11110000, 0b11111100, 0b11000000, 0b11111110, 0b00001100]
In [29]: bs
Out[29]: [240, 252, 192, 254, 12]
In [30]: nbits = 8
In [31]: bits = np.array([list(np.binary_repr(b, width=nbits)) for b in bs], dtype=np.uint8)
In [32]: bits
Out[32]:
array([[1, 1, 1, 1, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 0, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1, 1, 0],
[0, 0, 0, 0, 1, 1, 0, 0]], dtype=uint8)
bits - , . , , :
In [33]: bits.mean(axis=0)
Out[33]: array([ 0.8, 0.8, 0.6, 0.6, 0.6, 0.6, 0.2, 0. ])
. . :
In [34]: bits.mean(axis=0)[::-1]
Out[34]: array([ 0. , 0.2, 0.6, 0.6, 0.6, 0.6, 0.8, 0.8])