如何在TensorFlow或Numpy中将整数数组转换为二进制编码?

时间:2018-03-08 14:19:02

标签: python-3.x numpy tensorflow

我有一个数字输入,范围在[0, 15],我想以4位的二进制代码提供给我的网络。例如,输入[0,1,4,7]应为[[0,0,0,0],[0,0,0,1],[0,1,0,0],[0,1,1,1]]

tf.one_hot操作已接近,但不完全符合我的要求。是否有任何优雅的方式,无论是使用Numpy还是TensorFlow,将我的输入转换为二进制编码,以便将其输入我的网络?

我最好的解决方案是为每个值使用np.binary_repr,并将其从string转换为integers数组,但我觉得这不是一个好的解决方案(转换两次) ,首先进入字符串,然后进入数组)。

1 个答案:

答案 0 :(得分:1)

这样的事情:

np.unpackbits(np.array([[0,1,4,7]],np.uint8)).reshape(-1,4)[1::2,:]

我确信它可以被改进,但至少它是矢量化的

或者这可能更有意义:

np.unpackbits(np.array([[0,1,4,7]],np.uint8)).reshape(-1,8)[:,4:]