Предположит, у меня есть numpy
вектора с n
элементами, поэтому я хотел бы, чтобы закодировать числа в этом векторе в двоичной системе счисления, так что в результате форма будет (n,m)
где m
является log2(maxnumber)
, например:NumPy двоичного быстрого поколения
x = numpy.array([32,5,67])
Поскольку максимальное число у меня есть 67
, мне нужно numpy.ceil(numpy.log2(67)) == 7
бит для кодирования этого вектора, так форма результата будет (3,7)
array([[1, 0, 0, 0, 0, 1, 1],
[0, 0, 0, 0, 1, 0, 1],
[0, 1, 0, 0, 0, 0, 0]])
Проблема возникает, потому что у меня нет быстрого способа переместить двоичную нотацию от
функция numpy.binary_repr
в массив numpy. Теперь я должен перебрать результат, и положить каждый бит солидарную:
brepr = numpy.binary_repr(x[i],width=7)
j = 0
for bin in brepr:
X[i][j] = bin
j += 1
Это очень timecost и глупый способ, как сделать его эффективным?
См http://stackoverflow.com/questions/22227595/convert-integer-to-binary-array -с-подходит-обивка –