2017-03-19 1 views
0

파이썬에서 bin (Z)가 정수 Z에 해당하는 이진수를 반환한다는 것을 알고 있지만 파이썬에서 정수 매트릭스의 모든 요소에 bin을 적용하는 방법을 알아 냈습니다.어떻게 정수형 행렬을 해당 요소가 파이썬에서 빈 (정수형 행렬의 요소) 인 행렬로 변환 할 수 있습니까?

input(2x3) 
matrix[[1, 1, 2],[3, 5, 8]] 

output(2x3) with 8 bits 
matrix[[00000001, 00000001, 00000010],[00000011, 00000101, 00001000]] 
+0

... –

답변

0

numpy의 binary_repr()을 사용하면 이름에서 알 수 있듯이 지정된 정수를 이진 표현으로 변환 할 수 있습니다. width 매개 변수는 주어진 길이 (이 경우 8)의 출력을 가능하게합니다. 그러나이를 행렬 또는 배열에 적용하면 맨 앞에 0이 누락되는 문제가 발생합니다. 이는 이진 표현에서 문자열을 사용하거나 zfill()을 사용하여 here을 사용하여 처리 할 수 ​​있습니다. 가능한 해결책의 그래서주는 예 : binary_repr()로 루프 설정이 내가 아는 어떤 배열 지원하지 않는다

import numpy as np 

data = np.random.randint(0,100,(2,3), dtype=int) 
print(data) 
n,m = data.shape 
data_bin = np.zeros((n, m), dtype=int) 
for i in range(n): 
    for j in range(m): 
     data_bin[i, j] = np.binary_repr(data[i, j], width=8) 
print(data_bin) 

data_bin_str = np.zeros((n, m), dtype='|S8') 
for i in range(n): 
    for j in range(m): 
     data_bin_str[i, j] = str(np.binary_repr(data[i, j], width=8)) 
print(data_bin_str) 

주 (here 참조).

0

목록 작성을 통해 해당 작업을 수행 할 수 있어야합니다.

[행렬 Y에 대한 Y 방향 (X)]의 빈 (X)] 주어진 입력 행렬

+0

그렇지 않습니다. 오류 메시지 : 하나의 요소가있는 정수 배열 만 인덱스 – Nuelsian

+0

으로 변환 할 수 있습니다. 2D 목록 용 이었으므로 numpy.matrix를 사용하게되었습니다. 'numpy.matrix (matrix.tolist()에서 y에 대해 [[bin (x) in x in y])' – Ewe

0

: input_matrix 본 정수 행렬의 예를 도시 할 것이다

matrix([[bin(int(entry))[2:].zfill(8) for entry in row_vector]for row_vector 
in array(input_matrix)]) 

examples. 

input_matrix = matrix([[1, 1, 2],[3, 5, 8]]) 

output = matrix([['00000001', '00000001', '00000010'], 
       ['00000011', '00000101', '00001000']], dtype='|S8')