Форум сайта python.su
В общем мне нужно чтобы записанные в массив числа, в десятеричной системе, были преобразованы в двоичную систему чтобы дальше в ней работать (преобразовать в вектор), но массивные числа, питон отказывается переводить хз почему(хотя просто числа переводит).
import numpy as np
import random
m = 5
n = 2
print (bin(m))
z = np.zeros()
for i in range (m):
for j in range(n):
z = random.randint(0,10)
print (bin(z))
Вот что пишет на последнюю строчку : “'numpy.float64' object cannot be interpreted as an integer”
Офлайн
>>> import numpy as np >>> m = 5 >>> n = 2 >>> z = np.random.randint(0, 10, (m, n)) >>> print z [[2 2] [1 2] [7 3] [1 8] [7 2]] >>> print np.vectorize(lambda x: np.binary_repr(x, width=4))(z) [['0010' '0010'] ['0001' '0010'] ['0111' '0011'] ['0001' '1000'] ['0111' '0010']]
Офлайн
забыл написать что у меня 3 питон. На последнюю строчку ругается, что неправильный синтаксис print np.vectorize(lambda x: np.binary_repr(x, width=4))(z)
Офлайн
все, разобрался, поставил скобки, все заработало. Спасибо большое))
Отредактировано omon3 (Июль 16, 2015 21:38:04)
Офлайн
omon3
все, разобрался,
omon3У меня сильное подозрение что первое утверждение не верно, поскольку мне трудно представить какая дальнейшая работа требует файла заполненного массивом строк из нулей и единиц. Это нужно может для того чтобы посмотреть глазками где какие биты установлены при отладке алгоритмов и ни для чего более.
исла, в десятеричной системе, были преобразованы в двоичную систему чтобы дальше в ней работать
Отредактировано doza_and (Июль 16, 2015 21:52:53)
Офлайн
мне нужно в итоге сделать программу считающую блоки замены в линейном криптоанализе.
Офлайн
omon3Для этого есть побитовые операции. они будут работать на порядки быстрее чем запись строк в файл и последюущее чтение.
считающую блоки замены
Офлайн
А можете пояснить причину не работы команды bin? И почему при использовании моего кода и кода terabayt в итоге не работает, ведь по идее не важно как мы заполнили сам массив, перевод его в двоичную систему происходит только в конце?
import numpy as np
import random
m = 5
n = 2
z = np.zeros()
for i in range (m):
for j in range(n):
z = np.random.randint(0,10)
print (z)
print (np.vectorize(lambda x: np.binary_repr(x, width=4))(z))
Офлайн