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

Python 3.x 如何在TensorFlow或Numpy中将整数数组转换为二进制编码?,python-3.x,numpy,tensorflow,Python 3.x,Numpy,Tensorflow,我有一个数字输入,范围在[0,15]上,我想以4位二进制代码的形式输入到我的网络。例如,输入[0,1,4,7]应该变成[[0,0,0,0,0,1],[0,1,0,0],[0,1,0,0],[0,1,1] tf.one_hot操作已接近完成,但并不完全符合我的要求。是否有任何优雅的方式,无论是使用Numpy还是TensorFlow,将我的输入转换为二进制编码,以便将其输入到我的网络中 我的最佳解决方案是对每个值使用np.binary\u repr,并将其从字符串转换为整数数组,但我觉得这不是一个好

我有一个数字输入,范围在
[0,15]
上,我想以4位二进制代码的形式输入到我的网络。例如,输入
[0,1,4,7]
应该变成
[[0,0,0,0,0,1],[0,1,0,0],[0,1,0,0],[0,1,1]

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

我的最佳解决方案是对每个值使用
np.binary\u repr
,并将其从
字符串
转换为
整数数组
,但我觉得这不是一个好的解决方案(转换两次,首先转换为字符串,然后转换为数组)。

类似这样的情况:

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:]

第二种选择似乎要干净得多。干得好