일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 재귀함수
- matrix fo a linear transformation
- 랜덤 순서 배열
- one-to-one
- matrix trnasformations
- 코틀린 시작하기
- Big-Oh 예제
- 일차변환
- linear dependence
- 알고리즘 분석의 실례
- solutions of matrix equation
- trivial solution
- 빅오 표기법
- 배열 섞기
- nonhomogeneous linear system
- homogeneous linear system
- python
- Big-O 예제
- itertools
- Big-Oh notation
- NumPy
- 빅오메가
- matrix-vector product
- 이진 탐색
- 코틀린 Hello World!
- Big Theta
- Big Omega
- 빅세타
- recursive algorithms
- nontrivial solution
- Today
- Total
목록Python (28)
코딩 연습
numpy 모듈의 nonzero 함수는 요소들 중 0이 아닌 값들의 index 들을 반환해 주는 함수이다. 다음의 예제를 보자. >>> import numpy as np >>> a=np.array([1, 0, 2, 3, 0]) >>> np.nonzero(a) (array([0, 2, 3]),) 0이 아닌 값 1, 2, 3 의 index 인 0, 2, 3 을 array 형태로 리턴해 주는 것을 볼 수 있다. 그런데 a 가 2D array 가 되면 그 결과를 보기가 좀 복잡해 진다. >>> a=np.array([[1, 0, 7], [8, 1, 0], [1, 0, 0]]) >>> a array([[1, 0, 7], [8, 1, 0], [1, 0, 0]]) >>> np.nonzero(a) (array([0, 0..
numpy 모듈의 amax 함수는 array 의 최댓값을 반환하는 함수이다. 다음 예를 보자. >>> import numpy as np >>> a = np.range(4) >>> a array([0, 1, 2, 3]) >>> np.amax(a) 3 위 예에서 볼 수 있듯이 np.amax(a) 는 array [0, 1, 2, 3] 의 요소 중 가장 큰 값이 3을 반환하는 거을 알 수 있다.amax 함수는 행렬 (matrix) 에서 행이나 열 각각에 대한 최댓값을 반환해 주기도 한다. >>> a = np.arange(4).reshape((2, 2)) >>> a array([[0, 1], [2, 3]]) >>> np.amax(a, axis=0) array([2, 3]) >>> np.amax(a, axis=1)..
numpy.arange([start, ] stop, [step, ] dtype=None) numpy 모듈의 arange 함수는 반열린구간 [start, stop) 에서 step 의 크기만큼 일정하게 떨어져 있는 숫자들을 array 형태로 반환해 주는 함수다. stop 매개변수의 값은 반드시 전달되어야 하지만 start 는 step 은 꼭 전달되지 않아도 된다. start 값이 전달되지 않았다면 0 을 기본값으로 가지며, step 값이 전달되지 않았다면 1 값을 기본값으로 갖게 된다. dtype 의 경우 결과로 반환되는 array 이의 type 을 지정할 때 사용한다. dtype 값이 주어지지 않는 경우 전달된 다른 매개 변수로부터 type 을 추론하게 된다. 다음의 예를 보면 쉽게 이해할 수 있을 것이다..
파이썬의 내장함수 all 은 다음과 같다. def all(iterable): for element in iterable: if not element: return False return True 함수 all 은 매개변수로 iterable (리스트, 튜플, 딕셔너리 등등) 를 갖는다. 함수 all 은 iterable 내의 모든 요소가 참이거나 혹은 iterable 이 비어 있다면 True 를 반환하고, 그 외의 경우에는 False 를 반환하는 함수이다. 즉, iterable 내의 요소 중 단 하나라도 거짓인 경우에는 False 를 반환한다. 파이썬에서는 0을 False 로 1은 True 로 인식한다. 다음의 예제를 보면 쉽게 이해할 수 있다. >>> all([]) True >>> all([1, 2, 3, ..
functools 모듈의 reduce 함수는 다음과 같다. def reduce(function, iterable, initializer=None): it = iter(iterable) if initializer is None: value = next(it) else: value = initializer for element in it: value = function(value, element) return value reduce 함수는 매개 변수로 function, iterable[, initializer] 를 갖는다. function 과 iterable 은 반드시 전달되어야 하고, initializer 는 선택적이라고 보면 된다. 위 코드를 보면 알겠지만 reduce 함수는 다음과 같이 iterable..
enumerate 함수는 다음과 같다. def enumerate(sequence, start=0): n = start for elem in sequence: yield n, elem n += 1 enumerate 함수는 두 개의 매개변수 sequence, start 를 갖는다. 쉽게 말해서 enumerate 함수는 sequence 의 각각의 요소에 index 를 붙인 튜플을 생성하는 반복자를 리턴하는 함수라고 생각하면 된다. 내가 써 놓고도 무슨 말인지 하나도 모르겠다. 다음의 예제를 보면 한방에 이해가 간다는 것을 믿어 의심치 않는다. >>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring..
파이썬의 itertools 모듈에는 다음과 같은 takewhile 함수가 있다. def takewhile(predicate, iterable): for x in iterable: if predicate(x): yield x else: break 이 함수는 두 개의 매개변수 predicate 와 iterable 을 갖는다. predicate 는 True 나 False 를 리턴하는 함수라고 보면 되고, iterable 은 리스트, 튜플, 문자열과 같이 각각의 요소에 접근할 수 있는 자료형이라고 보면 된다. takewhile 함수는 iterable 의 각각의 요소에 순서대로 접근하여 prediacte 이 참이 될 때까지의 요소만으로 이루어진 반복자를 리턴하는 함수다. 다음의 예제를 보면 쉽게 이해할 수 있다...
파이썬의 itertools 모듈에는 다음과 같은 count 라는 함수가 있다. def count(start=0, step=1): # count(10) --> 10 11 12 13 14 ... # count(2.5, 0.5) -> 2.5 3.0 3.5 ... n = start while True: yield n n += step 위에서 보는 바와 같이 함수 count 는 두 개의 매개 변수 start 와 step 을 갖고, 이들의 기본값(default value)는 각각 0과 1로 설정되어 있다. 함수의 설명에서 알 수 있듯이 count 함수는 start 로부터 시작하여 step 만큼 떨어진 수들을 무한히 생성하는 무한 반복자를 리턴한다. 다음의 예제를 보면 쉽게 이해할 수 있다. >>> for i in ..
1,2,3,4,5 를 나열하는 순열의 수는 5!=120 가지로 금방 계산할 수 있지만, 실제로 120 를 나열하는 것은 사람이 하기 힘든 일이다. 컴퓨터로 하면 금방 될거라고 생각했는데, 생각만큼 쉽지는 않았다. 이런 저런 방법들을 생각해 보다가 결국 함수를 재귀적으로 사용하는 방법으로 결정을 했는데, 나열해야 하는 숫자가 많아질수록 시간이 좀 많이 걸리는 것 같다. 그래도 지금 수준에서 찾아낼 수있는 최선의 방법인거 같아 기록을 남긴다.새로운 방법을 배우고야 말았다. 그래서 두 가지 방법을 모두 소개하기로 한다. 1. 재귀함수를 이용하는 방법 기본적인 아이디어는 간단한다. 1 한 개를 나열하는 방법은 당연히 (1) 한 가지다. 1, 2 두 개를 나열하는 방법은 맨 앞자리가 ..
(파이썬 & 수학) 미분계수 구하기 를 먼저 보고 오세요. 파이썬에서 부정적분과 정적분을 하는 방법은 간단한다. 다음과 같이 sympy 패키지에서 Integral 클래스를 이용하여 부정적분 ∫x2+x+1dx 를 구해보자. >>> from sympy import Integral, Symbol >>> x = Symbol('x') >>> f = x**2 + x + 1 >>> Integral(f, x).doit() x**3/3 + x**2/2 + x 이쁘게 보고 싶다면 pprint 를 사용한다. >>> from sympy import pprint >>> pprint(Integral(f, x).doit()) 3 2 x x ── + ── + x 3 2 늘 그렇듯이 ..