N x N 크기의 배열 A가 있다고 치고,
A 전체의 요소에 for문 같은 거 안 쓰고
exp( A * math.PI * 1j )
연산 걸어버릴 수 있는 방법 없음?
예를 들어서,
( 1, 2, 3, 4 )
( 5, 6, 7, 8 ) 를 A로 치면
( exp(1*math.PI*1j), exp(2*math.PI*1j), exp(3*math.PI*1j), exp(4*math.PI*1j) )
( exp(5*math.PI*1j), exp(6*math.PI*1j), exp(7*math.PI*1j), exp(8*math.PI*1j) )
이런 식으로
A를 numpy.array로 바꾸거나
numpy.array로 바꾸면 뭐가 좋음?
2중 리스트 컴프리헨션 쓰거나
2중 map을 쓰거나
numpy가 쉽사기
for문 안 쓰고 가능한 거 맞ㅇ므?
133.70) 님이 쓴 식 그대로 계산이 됨. 제일 깨끗하고 깔끔ㅇ한방법이지만 내부 자료구조 구현이 바뀌는게 단점임. N이 충분히 크면 성능도 제일 좋게 나오지만 별로 안 크면 쓸데없이 내부 구현 변환한다고 더 오래걸릴 수 있음
크기는 대충 128x128
넘파이 솔직히 내부 자료구조로 걍 리스트 쓰는거 있으면 좋겠음. 인터페이스는 그대로에..
어떤 식으로 써야 위에 저게 가능함? A_array = np.array(A) 로 해서, exp(A_array * 2 * math.PI * 1j)로 씹가능?
그냥 2중 리스트 컴프리 헨션 써야겠음;
그냥 함수하나짜셈. 매번저렇게 코딩할려니까 귀찮아서 그런거아님? 인자로 곱할값 받고 함수내부에서 행렬A에 곱해서 리턴하는 함수짜셈 그럼 함수이름이 matrix_A라하면 matrix_A(exp( A * math.PI * 1j )) 하면 됨 근데 이거 라이브러리로 구현되어있을듯
샘플링 수가 너무 많아서 속도 올리려고 for문 안 쓰는 방향 찾고 있는 거임. 샘플링 수가 10000 x 1000 x 1000 인데 여기에 배열 양자연산이랑 압축까지 시켜야 해서 for문 하나라도 배제해 가지않으면 안 됨..
졸라크네 넘파이가 답임
역시 넘파이 써야 함? A_array = np.array(A) 로 해서, exp(A_array * 2 * math.PI * 1j) 이런 식으로 연산 씹가능?
ret = np.exp(np.array(A) * 2 * np.PI * j)
어우 섹스 감사
numpy쓰고 벡터라이제이션(넘파이 함수만으로 계산 하는 거) 잘 하면 개빨라짐
벡터라이제이션은 또 무엇이지?
님 np.diag(random_array)로 대각 성분만 빼와도 np.array형식인 것?
for 배제하고 numpy함수만으로 계산하는 걸 의미함. 그렇게 하면 파이썬에서 넘어간 np.array가 넘파이쪽에서 최적화된 C코드로 계산되서 빠름
ㅇㅋㅇㅋ
퍄 님 때문에 오늘 np.exp라는 좋은 라이브러리 함수가 있다는 걸 배우고 갑니다.
넘꽈이 함수 졸라게 많은디 검색해가면서 하십쇼..
exp는 처음 알았음... 지금까지 math exp만 써와서 넘꽈이에도 저런 함수가 있는지 생각도 못 함