omon3
Июль 16, 2015 20:42:55
В общем мне нужно чтобы записанные в массив числа, в десятеричной системе, были преобразованы в двоичную систему чтобы дальше в ней работать (преобразовать в вектор), но массивные числа, питон отказывается переводить хз почему(хотя просто числа переводит).
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”
terabayt
Июль 16, 2015 21:05:18
>>> 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']]
omon3
Июль 16, 2015 21:26:55
забыл написать что у меня 3 питон. На последнюю строчку ругается, что неправильный синтаксис print np.vectorize(lambda x: np.binary_repr(x, width=4))(z)
omon3
Июль 16, 2015 21:28:03
все, разобрался, поставил скобки, все заработало. Спасибо большое))
doza_and
Июль 16, 2015 21:50:31
omon3
все, разобрался,
omon3
исла, в десятеричной системе, были преобразованы в двоичную систему чтобы дальше в ней работать
У меня сильное подозрение что первое утверждение не верно, поскольку мне трудно представить какая дальнейшая работа требует файла заполненного массивом строк из нулей и единиц. Это нужно может для того чтобы посмотреть глазками где какие биты установлены при отладке алгоритмов и ни для чего более.
Думаю что для вас будет полезно если попробуете меня разубедить, описав дальнейшую вашу работу с этими строками.
omon3
Июль 17, 2015 00:18:00
мне нужно в итоге сделать программу считающую блоки замены в линейном криптоанализе.
doza_and
Июль 17, 2015 09:08:20
omon3
считающую блоки замены
Для этого есть побитовые операции. они будут работать на порядки быстрее чем запись строк в файл и последюущее чтение.
omon3
Июль 18, 2015 14:45:34
А можете пояснить причину не работы команды 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))