이전 포스팅에서는 파일을 수정만 하고, 스테이징이나 커밋을 하지 않은 경우에 다시 파일을 이전 상태로 되돌리는 방법에 대해서 다루었다. 이번 포스팅에서는 파일을 스테이징 했을 때, 파일을 커밋했을 때 각각 어떤 방식으로 이전 파일 버전으로 되돌려야 하는지에 대해서 글을 쓸 것이다. 스테이징 되돌리기 이전 포스팅에서 만들었었던 alphabet.txt 파일을 vim을 통해서 기존의 내용을 삭제하고, A, B, C, D를 한줄씩 입력한다. $ vim alphabet.txt 수정한 내용을 저장하고 나온 뒤에 alphabet.txt를 스테이징 한다. $ git add alphabet.txt $ git status git status로 출력된 글 중에서 '(use "git restore --staged ..." t..
데이터 사이언스 사용 설명서 검색 결과
Numpy Numpy는 파이썬으로 데이터를 분석할 때 가장 많이 사용하는 모듈 중 하나이다. Numpy의 자료형은 ndarray로 효율적인 배열 연산을 하기 위해 개발되었다. 리스트와 ndarray는 유연성과 효율성 측면에서 비교할 수 있다. 파이썬 리스트의 경우, 서로 다른 자료형을 담을 수 있어 유연성이 높은 반면 각 요소의 정보를 따로 담아야 하기 때문에 반복문 사용이 필수적이라 효율성이 떨어진다. ndarray의 경우 같은 자료형만을 이용해 구성할 수 있어 유연성은 떨어지지만 모든 요소 정보를 한 번에 저장하고 C로 구현된 내부 반복문을 사용하기 때문에 속도가 매우 빠르다. 배열 만들기 : np.array() 리스트를 활용해 배열을 만들 수 있다. 이 외에, array() 함수의 인자로 리스트, ..
데이터 분석을 위한 프로그래밍 언어로 Python과 R이 주로 사용되는데, Python은 데이터 분석을 위해서 만들어진 언어는 아니다. 소프트웨어를 개발하기 위한 일반 프로그래밍 언어지만, 딥러닝을 활용할 수 있는 라이브러리가 있는 등의 기능을 많이 포함하고 있기 때문에 데이터 분석 분야에서 주목을 받고 있다. 반면, R은 데이터 분석을 위한 용도로 만들어진 언어다. 다른 프로그래밍 언어에 비해 문법이 간단하기 때문에 프로그래밍 지식이 많지 않아도 되기에 쉽게 사용할 수 있는 것이 장점이다. 1. R Installation The Comprehensive R Archive Network cran.r-project.org RStudio | Open source & professional software f..
git에서 커밋한 파일 확인하기 앞선 글에서는 그동한 커밋한 내용들을 git log를 이용해서 확인을 했었다. 하지만, git log를 통해서는 날짜와 커밋할 때 적었던 메세지, 작성자를 제외하고 더 세부적으로는 볼 수 없었다. 이번 포스팅에서는 이와 관련하여 조금 더 세부적으로 확인할 수 있는 방법에 대해서 적고자 한다. $ vim hello_world.txt $ vim alphabet.txt $ git status 를 통해서 hello_world.txt 파일을 수정하고 alphabet.txt파일을 생성한다. hello_world.txt파일은 "my email is ...."를 추가하고, alphabet.txt에서는 a, b, c, d를 각각 한줄씩 입력하였다. 마지막에 git status를 통해서 깃..
깃을 이용한 파일들의 버전관리는 총 3단계를 통해서 이루어진다. 작업트리 - 스테이지 - 저장소 - 작업트리 : 파일들을 수정, 저장 등의 작업을 하는 디렉토리. 앞선 글에서 git init으로 저장소로 지정한 디렉토리를 의미한다. - 스테이지 : 버전으로 만들 파일이 대기하는 곳 - 저장소 : 스테이지에 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳 앞선 글에서 git-repos라는 디렉토리를 git init을 통해서 깃 저장소로 지정했다. $ cd git-repos 를 통해서 그곳으로 들어간다. 현재 깃의 상태를 나타내기 위해 $ git status 를 입력한다. 코드를 입력해보면 위의 이미지와 같이 'No commits yet'을 출력하는 것을 확인할 수 있다. 이제 이곳에 vim을 이용해서 ..
깃과 깃허브란? 많은 사람들이 깃, 깃허브를 사용하고 그곳에서 여러 오픈소스와 코드를 참고한다고 하지만, 아직 입문하는 이들에게는 이게 무엇인지, 꼭 필요한 것인지에 대해서 의문을 가질 수 있다. 깃과 깃허브는 '버전 관리', '백업', '협업'의 역할을 수행한다. - 버전 관리 : 우리가 사용하는 여러 프로그램들의 코드가 수시로 변화하고 있다. 이런 상황에서 임의의 이름을 지어서 파일을 생성한다면, 4~5개 정도는 기억하고 해볼만 하겠지만, 수십개 혹은 수백개의 파일의 버전을 관리해야 한다면, 사람의 머리로는 하기 굉장히 어려울 것이다. 파일의 이름을 설정하는 것도 어려울 뿐더러, 해당 파일이 이전 파일에서 어떤 내용을 개선한 파일인지를 구별해내는 작업이 굉장히 번거롭다. 깃은 이런 점을 해결해주기 위..
import cv2 import numpy as np import matplotlib.pyplot as plt Contours Feature img = cv2.imread('cropped.jpg') img_copy = img.copy() img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) res, thr = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY) contours, _ = cv2.findContours(thr, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) cnt = contours[1] cv2.drawContours(img_copy, [cnt], -1, (0, 255, 0), 2) plt...
import cv2 import numpy as np import matplotlib.pyplot as plt Contour Features 1. Contour Approximation (Contour 근사) cv2.findContours 함수를 통해 찾은 Contours line에는 각각의 Contours point를 가지고 있다. 보통은 이 Point를 drawContours 함수를 이용하여 Line을 그리게 된다. 이 때 우리가 지정한 정밀도에 따라 Point의 꼭짓점의 수를 줄여가면서 기존의 Contours line에 근사한 line을 그릴 수 있다. 이 Point의 수를 줄이는데 Douglas-Peucker 알고리즘을 사용한다. cv2.approxPolyDP(curve, epsilon, clos..
import cv2 import numpy as np import matplotlib.pyplot as plt Contours Contour는 동일한 색 또는 동일한 픽셀값(강도, intensity)을 가지고 있는 영역의 경계선 정보이다. 물체의 윤곽선, 외형을 파악하는데 사용된다. openCV의 findContour 함수로 이미지의 Contour 정보와 Contour 계층구조(hierarchy) 정보를 출력한다. 흑백 이미지 또는 이진화된 이미지에만 적용할 수 있다. findContours 함수로 반환받는 Contour 값은 Contour를 구성하는 점들로 이루어진 배열의 리스트로 len(contours)로는 hierarchy의 갯수를, len(contours[i])로는 각각의 hierarchy를 이루..
문제 링크: www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B�� www.acmicpc.net 문제 설명 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A [i][j] = i×j이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N 이 된다. B를 오름차순 정렬했을 때, B [k]를 구해보자. 배열 A와 B의 인덱스는 1부터 시작한다. 입력 첫째 줄에 배열의 크기 N이 주어진다. N은 105보다 작거나 같은 자연수이다. 둘째 줄에 k..
최근댓글