2016년 11월 27일 일요일

python zip 함수를 이용한 transpose

행렬 연산중에 transpose라는 연산이 있습니다.

전치행렬이라고도 하는데요,  A^T 이런식으로

행렬에서 행과 열을 바꿔서, 나타내는 방법입니다.

{\displaystyle {\begin{bmatrix}1&2\\3&4\end{bmatrix}}^{\mathrm {T} }\!\!\;\!=\,{\begin{bmatrix}1&3\\2&4\end{bmatrix}}\quad \quad \quad \quad {\begin{bmatrix}1&2\\3&4\\5&6\end{bmatrix}}^{\mathrm {T} }\!\!\;\!=\,{\begin{bmatrix}1&3&5\\2&4&6\end{bmatrix}}\;}



자매품인 numpy 에서 transpose는 transpose라는 함수가 따로 존재하기도 합니다.


python 에서 numpy 를 사용하지 않고 transpose를 구하는 방법중 쉬운방법중 하나는
zip 함수를 이용하는 것입니다. zip함수와 *를 이용하면 아래와 같이 간단하게 transpose를 구현할 수 있습니다.



테이블의 행과열을 바꿀일이 있다면 zip 함수를 이용하면 아래와 같이 간단히 바꿀수 있는겁니다.


>>> A = [[1,2,3],[4,5,6]]
>>> list( zip(*A))
[(1, 4), (2, 5), (3, 6)]
>>> 


참조자료 http://ko.wikipedia.org/wiki/%EC%A0%84%EC%B9%98%ED%96%89%EB%A0%AC


2016년 7월 3일 일요일

파이썬 딕셔너리를 정렬하는 방법 (값 또는 키)

파이썬에서 dictionary를 정렬하는 방법

보통 sorted 명령을 사용하면 키를 이용해서 정렬이  됩니다.


보통 아래와 같이 key를 사용해서 정렬을 하는데


x = {1: 'a', 3: 'd', 4: 'c', 2: 'b', 0: 'e'}

sorted_list = sorted(x)


>>> for y in sorted(x):
...   print (y,x[y])
...
0 e
1 a
2 b
3 d
4 c

값을 이용해서 정렬을 할경우 3아래와 같이 하면 됩니다.

items() 키, 값을 모두 받아서, key 부분에는 원래 함수를 지정해주면되는데,

lambda 함수를 이용해서, 값을 이용한 정리,

>>> for y,v in sorted(x.items(), key =lambda x:x[1]):
...   print (y,v)
... 
1 a
2 b
4 c
3 d
0 e

이상입니다

2016년 7월 2일 토요일

리눅스에서 pdf 보기 명령

pdf 보는 명령어는 많이 있지만, 간단히 evince라는 명령어를 이용, 현재 최신 버젼에는 대부분 깔려 있음. pdf 합치는 용도로는 pdfchain을 사용, pdfmod는 책갈피를 수정함. sudo apt-get install pdfchain pdfmod

리눅스에서 파일 합치기,

아래와 같이 cat명령어를 사용하여 간단하게 병합. cat file1.txt file2.txt > file_all.txt redirect를 이용해서 간단히 병합, 파일이 그 이상일경우 cat file3.txt >> file_all.txt 해서 추가 > 와 >> 의 차이는 >는 처음부터, >>는 파일이 존재할 경우 추가해서의 의미 cat 대신에 more를 사용해도 비슷함.

파이썬 정규표현식

파이썬의 정규표현식 re 패키지가 있다.


import re 를 이용해서 정규표현식을 불러오며,

보통 자주 사용하는 것들은 아래와 같다.


자주사용하는 패턴

re.match(pattern, string) - 패턴이 완전히 매치되는경우

re.search(pattern, string) - 첫번째 것만 찾을때

re.sub(pattern, substitute, string) - 특정패턴을 substitude로 교체

re.findall(pattern, string) - 해당되는 모든 경우를 찾아서, list 로 전달,

re.finditer(pattern, string) - 해당되는 모든 경우를 찾아서, iterator로 치환,


컴파일을 활용

정규표현식 자체가 리소스를 많이 잡아 먹는 방식이기때문에,


p = re.compile(pattern) 으로 컴파일을 미리한후

p.match(), p.search() 등등을 활용 하는 방법도 존재함.