함수 결과값을 넘파이 변환
조회수 518회
import numpy as np
u = np.random.randint(2,size=(1,100))
print(u)
print(np.size(u,1))
def turbo_enc(u):
K = np.size(u,1)
print(K)
enc = np.zeros_like(u)
enc = u
return enc
enc1 = turbo_enc(u)
print(enc1)
def add(x,y,z):
if((x+y+z) % 2 == 0):
return 0
else:
return 1
a1 = np.array((0))
a2 = np.array((0))
def loop(u):
global a1
global a2
for i in range(99):
if(i==0):
print(add(enc1[0][i],a1,a2),end ='')
elif(i == 1):
a1 = enc1[0][0]
print(add(enc1[0][i],a1,a2),end = '')
else:
a1 = enc1[0][i-1]
a2 = enc1[0][i-2]
print(add(enc1[0][i],a1,a2),end='')
return print(add(enc1[0][i],a1,a2),end='')
loop(u).reshape(10,10)
'add 함수' = 더한값이 짝수이면 0 반환, 홀수이면 1반환
여기 까지가 현재까지 작성한 코드 입니다. 대학 과제인 'Turbo code with interleaver'를 파이썬으로 작성하고 있습니다. 전체적인 과정은 다음과 같습니다.
- 입력하는 비트 100개(0과 1로 구성된 랜덤한 비트)
- 레지스터 메모리 m1,과 m2이 초기값은 0,0으로 설정되어 있다.
- 첫번째 어떠한 비트 'n'이 입력이 되었을때 add함수로 0또는 1의 값을 추출합니다. (이것을 A라고 하겠습니다.)
- A의 값과 m1,m2를 다시 add함수로 최종 출력합니다.
- 여기서 A의 100개의 값을 넘파이 배열로 만드는것을 희망하는데, reshape을 해본 결과
- 'NoneType' object has no attribute 'reshape' 라는 에러 메세지를 전달 받았습니다.
- 이렇게 함수를 통해 결과값을 얻는후에 넘파이 배열로 변환하는 방법에 대해서 알고싶습니다.
1 답변
-
의도를 정확하게 모르겠는데요. 일단 에러가 나온 이유를 설명해 드립니다.
def loop(u): #... return print(add(...))
이렇게 하면,
loop
함수의 반환값은print
함수의 반환값을 그대로 전달해 주는 것이 됩니다.print
함수의 반환값은None
이고요.그래서
loop(u)
는None
이 되고,loop(u).reshape(10, 10)
은None.reshape(10, 10)
과 같게 되는 거죠. 그런데,None
은reshape
이라는 메소드가 없기 때문에,'NoneType' object has no attribute 'reshape'
(NoneType 오브젝트는 reshape 이란 어트리뷰트가 없다
) 란 에러가 발생한 겁니다.질문자에게 좀 어려운 설명일 것 같은데, 10번만 읽어보세요.
댓글 입력