-
2023.04.11
[Python] 파이썬에서 외부 모듈 등록 방법 (sys.path.append, PYTHONPATH)
파이썬에서 외부 모듈 등록 방법 들어가며 해당 모듈이 있는 디렉터리로 이동하지 않고 모듈을 불러와서 사용하는 방법을 알아보자. 방법 ① sys.path.append 사용하기 먼저 파이썬 셸을 실행한 후 sys 모듈을 불러온다. C:\myPy> python >>> import sys sys 모듈은 파이썬을 설치할 때 함께 설치되는 라이브러리 모듈이다 이 sys 모듈을 사용하면 파이썬 라이브러리가 설치되어 있는 디렉터리를 확인할 수 있다. 다음과 같이 입력해 보자. >>> sys.path ['', 'C:\\Windows\\SYSTEM32\\python311.zip', 'c:\\Python311\\DLLs', 'c:\\Python311\\lib', 'c:\\Python311', 'c:\\Python311\\l..
-
2022.06.29
[Python] 동적 계획법(DP: Dynamic Programming)
동적 계획법(DP: Dynamic Programming) 동적 계획법(DP: Dynamic Programming) 불필요한 연산을 줄이고, 최적의 답안을 구하는 알고리즘 동적 계획법의 등장 배경 ① 배낭 문제(Knapsack Problem) 무게와 가격이 다른 여러 물건 중에서, 가장 효율적으로 배낭에 채우기 위한 문제 예) 배낭에 넣을 수 있는 무게는 한정 되어 있고, 배낭에 넣을 수 있는 보석의 무게와 가치가 각각 다를 때 어떻게 해야 가방에 가장 큰 이익이 담길 수 있도록 보석을 채울 수 있을까? ② 브루트 포스 검색(Brute Force Search) 모든 경우의 수를 나열한 후, 그중에서 최선의 해결책을 찾는 방법 '짐승(Brute)처럼 무식한 힘(Force)으로 전체 경우의 수를 검색한다.'는..
-
2022.06.29
[Python] 탐색(Search)
탐색(Search) 탐색의 기본 개념 탐색(Search) : 어떤 집합에서 원하는 것을 찾는 것으로 검색이라고 한다. 탐색의 종류 순차 탐색(Sequential Search) 이진 탐색(Binary Search) 트리 탐색(Tree Search) 검색 결과로 특정 집합의 위치인 인덱스를 알려 준다. 검색에 실패하면(찾는 데이터가 집합에 없다면) -1을 반환하는 것이 일반적이다. 탐색 알고리즘의 종류 탐색은 데이터 상태에 따라 다양한 알고리즘을 사용할 수 있다. 탐색할 집합이 정렬되어 있지 않은 상태라면 순차 탐색을 해야 한다. 순차 탐색(Sequential Search) 순차 탐색은 처음부터 끝까지 차례대로 찾아보는 것으로, 쉽지만 비효율적인 탐색 방법이다. 하지만, 집합의 데이터가 정렬되어 있지 않다면..
-
2022.06.28
[Python] 정렬(Sort) : 선택 정렬, 삽입 정렬, 버블 정렬, 퀵 정렬
정렬(Sort) 정렬의 기본 정렬의 개념 정렬(Sort) : 자료들을 일정한 순서대로 나열하는 것 순서대로 나열할 때는 작은 것부터 나열하는 방법(오름차순)과 큰 것부터 나열하는 방법(내림차순)이 있다. 오름차순 정렬(Ascending Sort) : 작은 것부터 큰 순으로 나열된 방법 내림차순 정렬(Descending Sort) : 큰 것부터 작은 순으로 나열된 방법 정렬의 대표적인 예 : 사전 정렬 알고리즘의 종류 오름차순 정렬이든 내림차순 정렬이든 결과의 형태만 다를 뿐, 같은 방식으로 처리된다. 정렬하는 방법에 대한 알고리즘은 수십 가지이다. 이해하고 구현하기 쉽지만 속도가 느린 알고리즘 이해와 구현이 어렵지만 속도가 빠른 알고리즘 특수한 상황에서만 효율적인 알고리즘 메모리를 적게 사용하는 알고리즘..
-
2022.06.28
[Python] 1차원/2차원 배열의 중앙값 계산하기
1차원/2차원 배열의 중앙값 계산하기 들어가며 이용하여 1차원 또는 2차원 배열의 중앙값을 계산해보자. 2차원 배열의 경우, 1차원 배열로 만든 후, 정렬하는 방법을 사용한다. 중앙값(Median) 데이터를 일렬로 정렬해서 나열한 후, 나열된 숫자의 가운데에 위치하는 값을 대푯값으로 하는 방법 중앙값을 구하려면 우선 데이터를 오름차순 또는 내림차순으로 정렬해야 한다. 데이터의 개수가 짝수 개인 경우, 중앙값을 (개수/2) 또는 (개수/2 - 1) 어느 것을 해도 된다. 프로그램 구현 ① : 1차원 배열의 중앙값 계산하기 선택 정렬(Selection Sort)을 이용하여 중앙값을 계산해본다. def selectionSort(ary) : n = len(ary) for i in range(0, n-1) : m..
-
2022.06.16
[Python] 10진수를 2진수/8진수/16진수로 변환하기
10진수를 2진수/8진수/16진수로 변환하기 들어가며 재귀(Recursion) 함수를 이용하여 간단하게 10진수를 2진수/8진수/16진수로 변환하는 프로그램을 작성할 수 있다. 프로그램 구현 0부터 F(15)까지의 문자를 리스트에 순서대로 넣어준 후, 필요할 때마다 리스트의 인덱스에 접근하여 나타내도록 하면 된다. def notation(base, n) : if n < base : print(numberChar[n], end = ' ') else : notation(base, n // base) print(numberChar[n % base], end = ' ') numberChar = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] numberChar += [..
-
2022.06.16
[Python] 회문/팰린드롬(Palindrome) 판단하기
회문/팰린드롬(Palindrome) 판단하기 들어가며 회문(Palindrome) : 앞에서부터 읽든 뒤에서부터 읽든 동일한 단어나 문장 대·소문자는 구분하지 않고, 공백이나 특수 문자는 제외한다. 첫 글자와 마지막 글자를 비교하여 같으면 회문일 수 있고, 다르면 회문이 아니다. 비교하지 않은 글자가 한 글자 이하이면 회문으로 확정하고, 한 글자 이하가 아니면 첫 글자는 다음 글자로 마지막 글자는 바로 앞 글자로 이동하는 식으로 비교하고 확인하는 과정을 반복한다. 회문인 예 회문이 아닌 예 프로그램 구현 재귀 함수를 이용하여 팰린드롬의 여부를 확인하는 프로그램을 작성할 수 있다. def palindrome(pStr) : if len(pStr) X kayak--> O Borrow or rob--> O 주유소..
-
2022.06.07
[Jupyter Notebook] 주피터 노트북을 다크모드로 변경하기
5
주피터 노트북을 다크모드로 변경하기 들어가며 아나콘다 프롬프트에 간단한 명령을 함으로써 주피터 노트북을 다크 모드(Dark Mode)로 변경할 수 있다. 방법 ① 아나콘다 프롬프트(Anaconda Prompt) 실행 ② 명령어 입력 다음의 명령을 입력하여 주피터 노트북의 테마가 담긴 패키지를 설치해준다. > pip install jupyterthemes Collecting jupyterthemes Downloading jupyterthemes-0.20.0-py2.py3-none-any.whl (7.0 MB) |████████████████████████████████| 7.0 MB 1.1 MB/s Collecting lesscpy>=0.11.2 Downloading lesscpy-0.15.0-py2.py..
-
2022.06.05
[Python] 윈도우 프로그래밍(Window Programming)
윈도우 프로그래밍(Window Programming) 기본 위젯 활용 기본 윈도우 창의 구성 위젯(Widget) : 윈도창에 나올 수 있는 문자, 버튼, 체크박스, 라디오 버튼 등 Tk() TK Interface 의 약어 Tcl/Tk 라는 전통적인 GUI 인터페이스 윈도우, 리눅스, 맥 등에서 모두 동일한 코드로 사용 가능하다. 기본이 되는 윈도우를 반환한다. 루트 윈도우 또는 베이스 윈도우 라고 한다. from tkinter import * window = Tk() ## 이 부분에서 화면을 구성하고 처리 ## window.mainloop() 더보기 윈도우 창 조절 from tkinter import * window = Tk() window.title("윈도우 창 연습") # 윈도우 창에 제목 표시 wi..
-
2022.06.05
[Python] 재귀 호출(Recursion)
재귀 호출(Recursion) 재귀 호출의 기본 재귀 호출의 개념 재귀 호출(Recursion) : 자기 자신을 다시 호출하는 것 재귀 호출은 처음 접하면 상당히 혼란스럽지만 자료구조와 알고리즘을 학습할 때 매우 유용한 방법이므로 꼭 알아두어야 한다. 재귀호출의 동작 파이썬에서는 재귀 호출이 너무 많아지면 반복을 자동 종료한다. def openBox() : print("종이 상자를 엽니다.") openBox() openBox() # 처음 함수를 다시 호출 더보기 종이 상자를 엽니다. 종이 상자를 엽니다. ... RecursionError: maximum recursion depth exceeded while pickling an object 반환 조건을 추가할 경우, 무한 반복에서 빠져나올 수 있다. d..
-
2022.06.04
[Python] 그래프(Graph)
그래프(Graph) 그래프(Graph)의 기본 그래프의 개념 그래프(Graph) : 여러 노드가 서로 연결된 자료구조 루트에서 하위 노드 방향으로만 이어지는 트리와 달리, 여러 노드가 연결되어 있을 수 있다. 트리도 그래프의 일종이지만, 트리와 그래프를 구현하는 코드 등이 확연히 다르기 때문에 이 둘은 별도로 생각하는 편이 낫다. 그래프의 종류 그래프는 정점을 연결하는 간선의 방향성 여부에 따라 방향 그래프와 무방향 그래프로 나눈다. 간선에 가중치(Weight)를 부여하여 가중치 그래프도 만들 수 있다. 무방향 그래프 트리의 노드(Node)에 해당하는 용어가 그래프에서는 정점(Vertex)이다. 정점을 연결하는 선은 간선(Edge)이므로 그래프는 정점과 간선의 집합으로 볼 수 있다. 그래프에서 정점은 V..
-
2022.06.04
[Python] 이진 트리(Binary Tree)
이진 트리(Binary Tree) 이진 트리(Binary Tree)의 기본 이진 트리의 개념 트리(Tree) 자료구조는 나무를 거꾸로 뒤집어 놓은 형태이다. 트리의 맨 위를 뿌리(Root, 루트)라고 한다. 루트를 레벨 0으로 두고 나뭇잎(Leaf, 리프)에 해당하는 아래로 내려올 수록 레벨이 1씩 증가한다. 트리에서 각 위치를 노드(Node)라고 한다. 각 노드는 선, 즉 에지(Edge)로 연결되어 있다. 위 노드와 바로 아래 노드의 관계를 부모-자식 관계(Parent-Child Relationship)라고 한다. 자식 노드의 개수를 차수(Degree)라고 한다. 차수가 0인 노드를 리프(Leaf)라고 한다. 트리의 차수는 차수가 가장 높은 노드를 기준으로 정한다. 컴퓨터는 데이터를 0과 1로 표현하므..
-
2022.06.03
[Python] 큐(Queue)
큐(Queue) 큐(Queue) 선입선출(First In First Out, FIFO)의 특징을 갖는 자료구조 큐는 양쪽이 뚫려 있는 구조이다. 한쪽에서는 삽입만 진행되고, 다른 쪽에서는 추출만 진행된다. 큐에 데이터를 삽입하는 동작을 enQueue(인큐)라고 하며, 데이터를 추출하는 동작을 deQueue(데큐)라고 한다. 큐의 중요한 용어로 front(머리)와 rear(꼬리)가 있다. 머리는 저장된 데이터 중 첫 번째 데이터를 가리킨다. 꼬리는 저장된 데이터 중 마지막 데이터를 가리킨다. 첫 번째 데이터 앞을 front가 가리켜야 한다. 데이터 삽입 : enQueue 데이터 추출 : deQueue 큐의 간단 구현 큐는 배열 형태로 구현할 수 있다. 큐는 초기에 크기를 지정하고 배열로 생성할 수 있다. ..
-
2022.06.02
[matplotlib] matplotlib API
matplotlib API matplotlib API 에는 matplotlib.pyplot 을 적용하는 pylot API가 있다. 또한 pyplot.subplots 로 하나의 Figure 및 하나 이상의 Axes 객체를 이용해 작업하는 객체 지향 API가 있다. matplotlib API Reference : https://matplotlib.org/stable/api/ API Reference — Matplotlib 3.5.2 documentation Warning Since heavily importing into the global namespace may result in unexpected behavior, the use of pylab is strongly discouraged. Use mat..
-
2022.06.02
[matplotlib] matplotlib 기본
matplotlib 기본 matplotlib 은 계층적으로 구성된다. 이 계층 구조의 최상위는 pyplot 모듈이 제공하는 matplotlib 상태 머신(State-Machine) 환경이다. 상태 머신 : 주어진 시간에 어떤 상태 정보를 저장하는 컴퓨터와 같은 장치 최상위 계층에서 사용되는 간단한 함수들은 축에 그래프 요소인 선, 그림, 텍스트 등을 추가한다. figure 구성 matplotlib에서 제공하는 figure는 모든 축(axis), 캔버스(canvas), 제목(title), 범례(legend) 등으로 구성된다. 객체는 크게 Figure 객체, Axes 객체, Axis 객체 등으로 구분된다. Figure 객체는 Axes 객체들을 포함하고, Axes 객체는 Axis 객체들을 포함한다. 전체 영역..
-
2022.06.01
[matplotlib] 맷플롯립(matplotlib) 개요
맷플롯립(matplotlib) 개요 맷플롯립(matplotlib) 파이썬 2D 플롯팅 라이브러리 다양한 인쇄 플랫폼에서 반응형 환경으로 출판 인쇄 품질 제공 55개의 서브 모듈로 구성 서브 모듈은 함수, 클래스, 메소드 및 속성으로 구성 matplotli b을 사용하면 데이터 처리 과정이나 결과를 몇 줄의 코드만으로 히스토그램, 파워 스펙트럼, 막대 그래프, 오류 차트, 산점도 등으로 쉽게 그릴 수 있어 유용하다. 공식 홈페이지 : https://matplotlib.org/ matplotlib 라이브러리의 서브 모듈 matplotlib 라이브러리에서 사용하는 주요 서브 모듈은 다음과 같다. 서브 모듈 내용 matplotlib backend, rc params 등을 설정 matplotlib.artist F..
-
2022.05.31
[Pandas] 수학 계산
수학 계산 넘파이와 판다스 라이브러리는 과학 계산을 포함하는 데이터 분석에서 중요하게 사용된다. 넘파이는 ndarray 객체의 요소를 빠르게 계산할 수 있도록 강력한 기능을 가진 많은 함수를 제공한다. 넘파이와 판다스는 같은 플랫폼에서 설계되었으므로 넘파이의 함수들을 판다스에서도 그대로 사용할 수 있다. 판다스에서는 이러한 함수들을 사용해 메타 데이터를 제외한 시리즈와 데이터프레임의 데이터 구조에서 수학 계산을 쉽게 할 수 있다. 통계 함수 통계 함수에는 min(), max(), std(), var(), median(), count(), sum(), cumsum(), count(), prod() 등의 함수 외에도 pct_change(), cov(), corr(), rank() 함수가 있다. 퍼센트 변화율..
-
2022.05.30
[Python] 괄호 매칭 검사 프로그램
괄호 매칭 검사 프로그램 들어가며 스택을 활용하여 간단하게 괄호의 매칭 검사를 수행할 수 있다. 여는 괄호를 만나면 push 하고, 닫는 괄호를 만나면 pop 한다 는 규칙을 적용한 후, push 또는 pop 하는 과정에서 다음의 조건을 확인하면 된다. ① 닫는 괄호를 만났을 때 스택은 비어 있지 않아야 한다. ② 닫는 괄호를 만났을 때 추출한 괄호는 여는 괄호여야 한다. ③ ②를 만족해도 두 괄호의 종류(소괄호, 중괄호, 대괄호)가 같아야 한다. ④ 모든 수식의 처리가 끝나면 스택은 비어 있어야 한다. 열린 괄호라면 무조건 push 한다. 닫는 괄호일 때는 스택에서 하나를 꺼내서 현재 괄호와 짝이 맞는지 확인한다. if '(', '[', '{', '' 중 하나면 열린 괄호 pop() if 두 괄호의 쌍..
-
2022.05.30
[Python] 스택(Stack)
스택(Stack) 스택(Stack) 선입후출(First In Last Out, FILO) 또는 후입선출(Last In First Out, LIFO)의 특징을 갖는 자료구조 스택은 한쪽만 뚫려 있는 구조이기 때문에 삽입과 추출이 한쪽에서만 진행된다. 스택에 데이터를 삽입하는 동작을 push(푸시)라고 하며, 데이터를 추출하는 동작을 pop(팝)이라고 한다. 스택에서는 top(톱)이라는 용어가 중요한데, 현재 스택에 들어 있는 가장 위의 데이터 위치를 가리키는 개념이다. 스택의 간단 구현 스택은 배열 형태로 구현할 수 있다. 스택은 초기에 크기를 지정하고 배열로 생성할 수 있다. 스택의 맨 위쪽을 표현하는 top은 아직 데이터가 없으므로 -1로 초기화한다. top이 -1이라는 것은 스택이 비었다는 의미로 해..
-
2022.05.30
[Pandas] 데이터의 그룹 연산
데이터의 그룹 연산 데이터의 그룹 연산은 원본 데이터 세트 객체를 그룹별로 분할(Split)하고 분할된 각 그룹에 함수를 적용(Apply)하고 결과를 통합(Combine)하는 연산을 수행한다. 이를 하나의 용어로 Split-Apply-Combine 이라 한다. 대다수의 경우 데이터를 여러 집합(Sets)으로 분할하고, 분할된 각 부분 집합에 함수와 같은 기능을 적용한다. 또는 분할하지 않더라도 여러 데이터 세트의 값들을 원하는 조건에 따라 어떤 인덱스나 라벨에 하나의 값으로 변환하는 형태로써 데이터를 합치는데, 이를 그룹 연산이라고 한다. groupby() 는 원본 데이터를 개별 그룹으로 나누어 이 그룹들에 특정 연산을 수행하고 수행 결과를 나타내는 각 그룹들을 합치기 위한 메소드이다. 예를 들어, 초등..
-
2022.05.29
[Pandas] 데이터 가공
데이터 가공 분석하려는 원본 데이터는 사용자가 원하는 형태가 아니며, 활용하기 어려운 구조이기 때문에 전처리 과정이 필요하다. 데이터를 원하는 형태로 변형해 분석하기 쉽게 만드는 것은 빅데이터 분석의 궁극적인 목적, 즉 데이터 활용을 극대화하는 작업이며 시각화 전 단계로써 매우 중요한 과정이다. 판다스는 우리가 원하는 데이터 세트를 구성할 수 있도록 인덱스의 다양한 종류의 로직과 선형 대수 기능을 포함하는 시리즈와 데이터프레임을 쉽게 결합하는 여러 방법을 제공한다. 이 방법들을 이용해 서로 다른 데이터 세트를 가공하면 새로운 가치를 창출할 수 있다. 데이터 이어 붙이기 판다스의 concat() 함수를 이용하면 시리즈와 데이터프레임을 이어 붙일 수 있다. 특히 같은 길이의 행이나 열을 따라 데이터를 이어 ..
-
2022.05.27
[Pandas] 데이터 타입과 입출력
데이터 타입과 입출력 판다스에서 제공하는 함수들을 이용해 직접 데이터를 읽고 출력할 수 있다. 판다스에서 데이터를 입력하고 출력하는 함수들의 세트를 I/O API 라고 한다. 판다스 I/O API를 이용해 다루는 데이터 타입은 텍스트 파일, 이진 데이터 그리고 SQL인 데이터베이스가 있다. 형식 데이터 타입 읽기 함수 쓰기 함수 텍스트 CSV read_csv to_csv JSON read_json to_json HTML read_html to_html Local Clipboard read_clipboard to_clipboard 이진 데이터 MS 액셀 read_excel to_excel HDF5 read_hdf to_hdf Feather read_feather to_feather Parquet read_..
-
2022.05.27
[Pandas] 데이터 처리
데이터 처리 판다스 객체에서 데이터 세트를 서브세트로 설정하거나 서브세트를 얻으려면 축을 라벨 처리해야 한다. 라벨 처리는 데이터 분석, 시각화, 양방향 디스플레이 기능에서 중요한 과정이며, 데이터를 자동 정렬하고 명시적으로 표현한다. 데이터 선택 데이터는 라벨(Label), 위치(Position), 호출(Call)을 이용해 선택할 수 있다. ① 라벨로 데이터 선택 라벨을 이용한 데이터 선택은 임의의 축을 따라서 범위를 나누는 일관성 있는 방법으로써 loc 속성을 사용한다. loc 속성에 입력할 수 있는 것들 1 또는 a 와 같은 단일 라벨 ['a', 'b', 'c'] 와 같은 리스트나 라벨들의 배열 a:f 와 같은 슬라이스 객체 불리언 배열 호출 함수 loc 속성은 데이터의 인덱스 타입이 일치하지 않으..
-
2022.05.25
[Pandas] 판다스의 주요 기능
판다스의 주요 기능 head 와 tail 메소드를 사용하여 시리즈나 데이터프레임의 내용을 살펴볼 수 있다. >>> ser = pd.Series(np.random.randn(1000)) >>> ser.head() 0 0.800680 1 -1.002317 2 0.808993 3 0.648255 4 -1.096188 dtype: float64 >>> ser.tail(3) 997 0.905623 998 -0.383506 999 -0.104021 dtype: float64 판다스는 메타데이터에 접근하도록 많은 속성을 가지고 있다. shape 속성으로 객체의 축 차원을 알 수 있다. 축 라벨을 확인하기 위해 시리즈에는 index, 데이터프레임의 행에는 index, 그리고 열에는 columns 속성을 사용할 수 있다..
-
2022.05.24
[Pandas] 판다스(Pandas) 개요
판다스(Pandas) 개요 판다스(Pandas) Panel Data System의 약어 파이썬으로 빅데이터를 처리하고 분석하는 데 가장 빈번하게 사용하며, 데이터 전처리에사 큰 비중을 차지하는 라이브러리 수치 테이블과 시계열(Time Series)을 처리하는 데이터 구조와 연산 방법을 제공한다. 2008년 초, Wes McKinney에 의해 금융 데이터를 계량 분석하기 위해 개발됐다. 2015년, 비영리단체 NumFOCUS에 의해 오픈소스로 관리되기 시작하였다. 공식 홈페이지 : https://pandas.pydata.org/ 판다스(Pandas)와 넘파이(NumPy) 판다스는 패널 데이터(Panel Data) 구조를 제공하기 위해 넘파이(NumPy) 위에 구성되도록 개발되었으므로 넘파이에서 쉽게 사용할..
-
2022.04.21
[Python] 원형 연결 리스트(Circular Linked List)
원형 연결 리스트(Circular Linked List) 원형 연결 리스트의 개념 단순 연결 리스트(Singly Linked List) 끝까지 방문한 후에는 더 이상 방문할 곳이 없어 종료되므로 다시 방문하려면 헤드(head)부터 재시작해야 한다. 원형 연결 리스트(Circular Linked List)는 단순 연결 리스트의 마지막 노드가 다시 첫 번째 노드를 가리키도록 설정되어 리스트 형태가 원(Circle) 형태로 구성된다. 시작 위치와 다음 위치가 계속 이어진 후, 마지막에 다시 시작 위치로 돌아오는 형태 원형 연결리스트는 단순 연결 리스트와 마찬가지로 데이터 삽입에서 오버헤드가 발생하지 않는다. 원형 연결 리스트의 원리 원형 연결 리스트의 원리 및 구조도 단순 연결 리스트와 많은 부분이 비슷하다...
-
2022.04.21
[Python] 단순 연결 리스트(Singly Linked List)
단순 연결 리스트(Singly Linked List) 단순 연결 리스트의 개념 선형 리스트(Linear List) 장점 배열에 구성하였기 때문에 단순하다. 물리적인 순서와 논리적인 순서가 동일하여 데이터를 찾기 간단하다. 프로그램으로 구현하기 비교적 쉽다. 단점 : 데이터를 삽입하거나 삭제할 때 많은 작업이 필요하다. 예) 100만 개인 선형 리스트의 맨 앞에 데이터를 하나 삽입하려면 약 100만 개를 뒤로 이동시키는 작업을 해야 한다. (오버헤드(Overhead) 발생) 단순 연결 리스트(Singly Linked List) 선형 리스트(Linear List)와 달리, 저장된 노드들이 물리적으로 떨어진 곳에 위치한다. 각 노드의 번지도 100, 200, 130 등으로 순차적이지 않다. 데이터와 링크로 구..
-
2022.04.21
[Python] 선형 리스트(Linear List)
선형 리스트(Linear List) 선형 리스트의 기본 개념 데이터를 일정한 순서로 나열한 구조 순차 리스트(Ordered List)라고도 한다. 입력 순서대로 저장하는 데이터에 해당한다. 선형 리스트는 다양한 방법으로 구현할 수 있지만, 가장 기본적인 방법은 배열 을 이용하는 것이다. 선형 리스트는 메모리에서도 차례로 저장된다. 원리 데이터 삽입 1단계 : 맨 끝에 빈칸을 확보한다. 2단계 : 삽입하고자 하는 공간에 빈칸이 없으므로, 삽입하고자 하는 공간 뒤에 있는 요소들을 한칸씩 뒤로 옮긴다. 3단계 : 빈자리에 요소를 삽입한다. 데이터 삭제 원하는 요소가 삭제된 후 빈칸을 그대로 두지 않고 뒤의 요소들을 앞으로 한칸씩 이동시킨다. 선형 리스트의 구현 사용자가 입력하는 데이터가 가변적으로 작동하는 범..
-
2022.04.14
[NumPy] 넘파이 적용
넘파이 적용 우리가 분석하고자 하는 대용량 데이터들은 어떤 파일 형태 안에 포함될 수 있다. 파이썬을 이용해 이 데이터들을 분석할 수 있고, 도표나 그림 형태로 나타난 결과를 데이터 파일 형태로 만들어 자장할 수 있다. 데이터 파일 입력과 출력 파이썬에서 제공하는 데이터 입력과 출력 방법은 크게 3가지로 분류할 수 있다. 파이썬 고유의 내장 함수를 이용해 처리하는 방법 open() read() write() close() 넘파이를 이용하는 방법 판다스에서 제공하는 read_csv(), to_csv() 함수를 사용하는 방법 넘파이는 파일을 읽고 데이터 파일로 쓰는 여러 방법을 제공한다. 넘파이 이진 파일 텍스트 파일 원시 이진 파일(Raw Binary File) 메모리 맵 파일(Memory-Mapped F..
-
2022.04.13
[NumPy] 배열 객체 관리와 연산
배열 객체 관리와 연산 넘파이는 수백만 개의 수치 데이터를 빠르게 처리함으로써 파이썬의 과학 계산을 빠르게 처리하는 라이브러리이다. 넘파이의 N차원 배열은 데이터를 빠르게 처리할 수 있는 구조이다. 이러한 구조는 요소의 데이터 타입과 크기가 정해져 있으며, 인덱싱으로 빠르게 필드에 접근하고 변경할 수 있는 장점이 있다. 넘파이는 메모리 버퍼에 있는 같은 타입의 매트릭스나 벡터 같은 배열 데이터를 하드웨어 레벨인 저수준 형태로 메모리에 저장하고 처리한다. 또한 넘파이는 같은 크기의 메모리를 할당받고, 연속된 메모리 공간에 존재하는 벡터 연산을 지원한다. 효율적인 인터페이스와 최적화된 관련 함수들, 그리고 최적화된 C 코드를 통해 CPU를 관리하는 벡터화 기능을 사용한 빠른 연산도 지원한다. 뷰와 복사 뷰(..