강좌/MachineLearning

TensorFlow #006 파이썬 라이브러리로 집합 연산

여름나라겨울이야기 2016. 12. 12. 16:46
728x90

Numpy

두둥. Python 이 집합을 다루는데 있어서 가장 많이 사용되는 라이브러리... 바로 Numpy 다. 이를 이용하면

* Python 언어에서 기본으로 지원하지 않는 array (배열) 혹은 matrix (행렬) 의 계산을 쉽게 할 수 있다.

* 기계학습에서 많이 사용되는 해석학 및 선형대수학에 관련된 수식들을 Python 위에서 쉽게 프로그래밍 할 수 있다.

Numpy 를 이용해 n 차원 집합들에 대해 합집합, 교집합, 차집합 등을 쉽게 얻을 수 있다. 자세한 내용은 매뉴얼과 튜토리얼이 뛰어남으로 생략...

영문 매뉴얼: https://docs.scipy.org/doc/numpy-1.10.0/index.html

영어 튜토리얼: http://cs231n.github.io/python-numpy-tutorial/#numpy

한국어 튜토리얼 : https://github.com/psygrammer/psytracker/blob/master/psytracker_3.md

아래 사이트가 짱입니다. 이전에 알았다면 이렇게 까지 삽질하면서 정리하지 않았을텐테.. 이러려고 그 긴 시간을 타이핑했나 자괴감들고 괴로워...

데이터 사이언스 스쿨: https://www.datascienceschool.net/view-notebook/661128713b654edc928ecb455a826b1d/

Numpy 모르고 짜는 예제 소스

import numpy as np

a = np.array([1, 2, 3])
b = np.array([3, 4, 5])

print "a: ", a
print "b: ", b

print "1차원 합집합: ", np.union1d(a, b)
print "1차원 교집합: ", np.intersect1d(a, b)
print "1차원 차집합: ", np.setdiff1d(a, b)
print "1차원 대칭차집합(합집합 - 교집합): ", np.setxor1d(a, b)

print "난수 발생(1 개): ", np.random.random(1)
print "난수 발생(3 개): ", np.random.random(3)

print "평균: 0 / 표준편자: 1 / 갯수: 1"
print "난수 발생(1 개): ", np.random.normal(0, 1, 1)

print "평균: 1 / 표준편자: 1 / 갯수: 3"
print "난수 발생(3 개): ", np.random.normal(1, 1, 3) 

결과

a: [1 2 3] b: [3 4 5] 1차원 합집합: [1 2 3 4 5] 1차원 교집합: [3] 1차원 차집합: [1 2] 1차원 대칭차집합(합집합 - 교집합): [1 2 4 5] 난수 발생(1 개): [ 0.22175816] 난수 발생(3 개): [ 0.05026685 0.55936494 0.84592088] 평균: 0 / 표준편자: 1 / 갯수: 1 난수 발생(1 개): [ 1.06993663] 평균: 1 / 표준편자: 1 / 갯수: 3  난수 발생(3 개): [ 1.72340994 1.2745553 -0.75286641] 

Numpy 를 왜 쓰냐고 제게 묻는다면.. 잘 모르지만 글 작성 시점에서는 아래 코드에서 감동 받아서 쓴다고...

import numpy as np
a = [1, 2, 3]

# TypeError:
# can only concatenate list (not "int") to list
# b = 2 * a + 1

# print b

c = np.array([1, 2, 3])
# 어메 Numpy 좋은 거 보소 1
# Numpy 배열 각 요소에 수학 연산을... 오~올
d = 2 * c + 1

print "d: ", d

# 어메 Numpy 좋은 거 보소 2
# Python 배열(리스트)를 Numpy 배열로...
e = np.array(a)

f = 2 * e + 1
print "f: ", f 

결과

d:  [3 5 7] 
f:  [3 5 7] 


반응형