【问题标题】:Append binary values column wise in python在python中逐列附加二进制值
【发布时间】:2018-10-23 06:24:28
【问题描述】:

我希望将字符串的二进制值存储在数组列中。

st = "hello world"
st = st.encode('utf-8')
# binary value for letter 'h'
bin(st[0]) -> '0b1101000'
# binary value for letter 'e'
bin(st[1]) -> '0b1100101'

等等……

我想将这些二进制字符串存储在数组中,如下所示:

0  1  
0  0
0  1
1  0
0  0
1  1
1  1
b  b
0  0

谢谢, 尼拉杰

【问题讨论】:

    标签: python-3.x numpy multidimensional-array character-encoding


    【解决方案1】:

    您可以使用np.fromstring 和np.unpackbits:

    >>> a = np.unpackbits(np.fromstring(st, np.uint8)).reshape((8, -1), order='F')[::-1]
    >>> a
    array([[0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0],
           [0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0],
           [0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1],
           [1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0],
           [0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0],
           [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
           [1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1],
           [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=uint8)
    

    这不包含b 字符。如果你必须拥有它:

    >>> np.r_['0,2,1', a.astype('U1')[:7], np.full(a.shape[1], 'b'), np.full(a.shape[1], '0')]
    array([['0', '1', '0', '0', '1', '0', '1', '1', '0', '0', '0'],
           ['0', '0', '0', '0', '1', '0', '1', '1', '1', '0', '0'],
           ['0', '1', '1', '1', '1', '0', '1', '1', '0', '1', '1'],
           ['1', '0', '1', '1', '1', '0', '0', '1', '0', '1', '0'],
           ['0', '0', '0', '0', '0', '0', '1', '0', '1', '0', '0'],
           ['1', '1', '1', '1', '1', '1', '1', '1', '1', '1', '1'],
           ['1', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1'],
           ['b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b'],
           ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0']],
          dtype='<U1')
    

    【讨论】:

      猜你喜欢
      • 2010-09-16
      • 2020-12-31
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 2020-05-15
      • 2017-06-01
      • 2016-01-12
      • 2019-03-10
      相关资源
      最近更新 更多