본문 바로가기

Programming/python67

[Numpy] ndarray 연산 ndarray 연산ndarray는 아래와 같은 방법으로 연산이 가능하다. ndarray에서의 연산은 for문 연산이 아니기 때문에 일괄처리가 가능하다. ndarray 슬라이싱ndarray도 python 문자열이나 list 처럼 슬라이싱이 가능하다.아래의 그림을 보면 0부터 9까지 저장되어 있는 1차원 배열 형태의 ndarray를 만들었고, 처음부터 5번째 까지만슬라이싱 하도록 되어 있다. 리스트 슬라이싱과의 중요한 차이점은 리스트의 경우에는 슬라이싱을 할 경우 데이터 복사가 이루어지지만 ndarray 슬라이싱의 경우는 원본 배열은 그대로 저장되어 있고 사용자에게 보여주는 뷰만 다른 형태로 보여주는것이기 때문에 데이터 복사가 이루어 지지 않는다. (데이터 베이스의 뷰 테이블과 비슷한 개념) 뷰 형태로 보여.. 2015. 3. 12.
[NumPy] ndarray 기본 NumPy란? Numerical Python의 줄임 말로써 고성능의 수치 계산을 하기 위해 만들어진 python package이다.파이썬을 이용한 데이터 분석을 하기 위해서는 pandas 뿐만 아니라 numpy를 익혀야만 보다 호율적인 데이터 분석이가능하다. ndarrayNumPy에서 가장 강력한 무기로 칭송받고 있는 N차원의 배열 객체.ndarray는 기존 파이썬과는 다르게 오직 같은 종류의 데이터만을 배열에 담을 수 있다. ndarray의 생성NumPy의 array함수를 통해 쉽게 배열 형태로 만들수 있다. 또한 zeros, ones 함수를 통해 0행렬, 또는 모든 행렬 값이 1인 행렬을 만들 수 있다.empty 함수는 행렬 값이 초기화되지 않은 행렬을 생성한다. arange 함수를 통해 범위 내의 .. 2015. 3. 10.
[Python] ipython 사용하기 1. 탭 자동 완성 인터프리터에서 알파벳을 입력한 후 키를 누르면 알파벳과 일치하는 객체나 함수의 리스트들이 나열된다.당연히 어떤 객체의 매서드나 속성 뒤의 마침표를 입력 한 후 키도 동작한다. 키는 파일 경로를 보여줄 수 도 있는데, 파일 경로를 입력한 후 키를 누르면 입력한 문자열에 해당하는파일 경로를 보여준다. 2. 객체 정보 보기변수 이름 뒤에 "?"를 붙이면 그 객체에 대한 일반 정보를 볼 수 있다. 만약에 객체가 함수라면 정의되어 있는 문서를 출력해 주며, "??"를 사용하면 함수의 소스까지 보여줄 수 있다. 3. %run외부 스크립트 파일을 실행할 수 있다. In[4]: %run ipython_test_script.py 스크립트 파일에 정의된 모든 변수(import, 함수, 전역변수) 들은 .. 2015. 3. 9.
[Python] 함수형 프로그래밍 MAP map(함수, 리스트) MAP은 함수와 리스트를 인자로 받은 후, 리스트로부터 원소를 하나씩 꺼내서 함수에 적용한 후 그 결과를 새로운 리스트로리턴한다. def f(x): return x*x x = [1, 2, 3, 4, 5]y = map(f, x) 두 개 이상의 값을 map 함수에 집어넣을 때에는 아래와 같이 구현하면 된다. x = [1, 2, 3, 4, 5, 6]y = [6, 7, 8, 9, 10, 11] z = map(lambda a, b:a+b, x, y) FILTER filter(함수, 리스트) 리스트에 들어있는 원소들을 함수에 적용시켜서 그 결과가 참인 값들을 새로운 리스트로 리턴한다. filter(lambda x : x%2, [1,2,3,4,5,6]) REDUCE reduce(함수, .. 2015. 3. 4.
[Python] 내장 순차 자료형 함수 enumerate 파이썬에서 foreach를 사용할 경우 각 리스트의 값이 순차적으로 루프된다.만약에 foreach 문에 index를 추가로 확인하고 싶다면 count 변수를 추가로 선언하여 1씩 증가해야 하는 불편함이 있다. collection = [10, 9, 8, 7, 6, 5]index = 0for i in collection: index += 1 enumerate는 해당 collection의 값 뿐만 아니라 index도 함께 리턴한다. for index, value in enumerate(collection): # 처리 enumerate를 이용한 아래의 사용도 가능해진다. collection = ['apple', 'banana', 'pineapple']fruit_dict = dict((value.. 2015. 3. 3.
[Python] 튜플은 값이 바뀌지 않는다? python에서 가장 많이 안쓰는 자료형이 튜플인 것 같다.튜플을 쓰는 용도는 거의 immutable한 데이터를 만들기 위할 때나 리턴 값을 여러개 받고 싶을 때 정도?(하지만 리턴도 왠만하면 dictionary "key:value" 형태로 좀더 명확하게 리턴을 표현해줄 때가 더 많음) 튜플의 가장 큰 특징이 한번 설정한 값은 바꿀수 없다 정도인데.. 튜플로 설정한 값도 때로는 바꿀 수가 있다..(읭??? 이게 먼말???) 바로 튜플안에 list가 존재하고 list 내의 아이템 값을 바꾸고자 하면 값이 바뀐다.왜냐하면 튜플이 가지고 있는 값은 list의 참조 값이지 list의 모든 값을 저장하고 있지는 않기 때문이다. 예를 들어 아래와 같은 예제가 가능하다. test_tuple = ('test', [1,.. 2015. 3. 2.
[Python] 덕타이핑? 파이썬은 duck typing을 지원하는 언어이다. Duck Typing이 무엇이냐 하면..만약에 어떤 새가 오리처럼 걷고 꽥꽥거리는 소리를 낸다면, 그 새를 오리라고 간주한다는 것이다. A라는 클래스와 B라는 클래스가 있고, 이것을 파라미터로 받는 함수가 존재한다고 가정하자.아래와 같은 형태가 될 것이다. public void TestFunction(Class param) 위 형태를 만족하려면 A클래스와 B클래스는 같은 부모로부터 상속을 받은 클래스이어야 한다.아무리 A클래스의 함수와 B클래스의 함수가 동일하고 해당하는 값이 동일하다고 하더라도, C++이나 JAVA에서는위 두 개의 클래스를 동일한 Type으로 간주하지 않는다.(그렇기 때문에 추상클래스라는게 있는거고.. 인터페이스를 고려해서 설계해야 하.. 2015. 3. 1.
[Python] 배포를 쉽게 도와주는 freeze 기존에 환경에서 다른 환경으로 서버를 이전할때, 기존에 깔려 있는 패키지나 모듈등을 일일이 찾아서 다시 설치하기에는 너무나 번거롭다.python에서는 freeze란 기능이 있어서 해당 기능을 사용하면 현재 서버에 깔려 있는 python 모듈들에 대한 목록을 뽑아내 준다.이전할 서버에서는 뽑혀진 목록들을 가지고 install만 실행하면 되니 무척이나 편리한 기능이라 할 수 있다. 실제 사용방법을 보자면, $> pip freeze > pip-requirements.txt 라고 치면 freeze를 통해 현재 서버에 설치되어 있는 python 모듈의 목록이 pip-requirements.txt에 저장이 된다. pip-requirements.txt BeautifulSoup==3.2.1Flask=0.10.1Jinj.. 2015. 2. 28.
[Python] 크롤링 시 주의사항 아래와 같이 코드를 작성하여 해당 주소에 대한 crawling을 시도하였는데 계속 response timeout이 발생하였다. import urllib2 try: response = urllib2.urlopen(url)except urllib2.HTTPError, e: print e.reason.args[1]except urllib2.URLError, e: print e.reason.args[1] '어 안될리가 없는데??'하도 이상해서 브라우저 창에 직접 쳐봤더니 데이터를 제대로 가져온다. '아.. header 검사하나보다.'신속하게 아래와 같이 user-agent header 추가. import urllib2 try: req = urllib2.Request(url) req.add_header('User.. 2015. 2. 25.