Уведомления

Группа в Telegram: @pythonsu

#1 Июль 16, 2015 20:42:55

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с переводом в другую систему счисления

В общем мне нужно чтобы записанные в массив числа, в десятеричной системе, были преобразованы в двоичную систему чтобы дальше в ней работать (преобразовать в вектор), но массивные числа, питон отказывается переводить хз почему(хотя просто числа переводит).

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”

Офлайн

#2 Июль 16, 2015 21:05:18

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проблема с переводом в другую систему счисления

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



————————————————
-*- Simple is better than complex -*-

Офлайн

#3 Июль 16, 2015 21:26:55

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с переводом в другую систему счисления

забыл написать что у меня 3 питон. На последнюю строчку ругается, что неправильный синтаксис print np.vectorize(lambda x: np.binary_repr(x, width=4))(z)

Офлайн

#4 Июль 16, 2015 21:28:03

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с переводом в другую систему счисления

все, разобрался, поставил скобки, все заработало. Спасибо большое))

Отредактировано omon3 (Июль 16, 2015 21:38:04)

Офлайн

#5 Июль 16, 2015 21:50:31

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Проблема с переводом в другую систему счисления

omon3
все, разобрался,
omon3
исла, в десятеричной системе, были преобразованы в двоичную систему чтобы дальше в ней работать
У меня сильное подозрение что первое утверждение не верно, поскольку мне трудно представить какая дальнейшая работа требует файла заполненного массивом строк из нулей и единиц. Это нужно может для того чтобы посмотреть глазками где какие биты установлены при отладке алгоритмов и ни для чего более.

Думаю что для вас будет полезно если попробуете меня разубедить, описав дальнейшую вашу работу с этими строками.



Отредактировано doza_and (Июль 16, 2015 21:52:53)

Офлайн

#6 Июль 17, 2015 00:18:00

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с переводом в другую систему счисления

мне нужно в итоге сделать программу считающую блоки замены в линейном криптоанализе.

Офлайн

#7 Июль 17, 2015 09:08:20

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Проблема с переводом в другую систему счисления

omon3
считающую блоки замены
Для этого есть побитовые операции. они будут работать на порядки быстрее чем запись строк в файл и последюущее чтение.



Офлайн

#8 Июль 18, 2015 14:45:34

omon3
Зарегистрирован: 2015-07-16
Сообщения: 37
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с переводом в другую систему счисления

А можете пояснить причину не работы команды 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))

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version