본문 바로가기

분류 전체보기

(284)
[팁]파일 복사/붙여넣기 (copy & paste) shutil을 이용하면 간단. shutil.copyfile(src_file, tgt_file) 아래는, 복사할 파일들을 리스트로 만들고, 그 파일들을 tgt_folder에 붙여넣기하는 예제. import os import shutil from_filelist = [ "D:/tmp/1/1.txt", "D:/tmp/1/2.txt", ] tgt_folder = "D:\\tmp\\2" for src in from_filelist: f = os.path.basename(src) tgt = os.path.join(tgt_folder, f) shutil.copyfile(src, tgt) 참고로, shutil에 있는 copy 관련 함수들의 특징을 보면, Function Copies metadata Copies perm..
UWB(Ultra Wide Band, 초광대역) 기술 분석(2/2) UWB에서 사용하는 주파수 UWB는 500 MHz에 이르는 광 대역폭을 사용합니다. 그렇기에 UWB를 이용해서 세밀한 거리 측정이 가능하다는 것은 앞 글에서 살펴 봤습니다. IEEE 802.15.4-2011에서의 UWB 대역폭 기준은 500 MHz~1300 MHz입니다. 여기서 문제는, 각 나라에서는 무선 주파수에 대해서 각 주파수별로 사용 용도를 한정해서, 사용 주파수끼리 간섭이 발생하지 않도록 하고 있습니다. UWB의 경우는 사용되는 파워 레벨이 매우 낮아서 간섭 현상이 많지 않으나, 그래도 다른 주파수와 혼용되면 간섭이 발생할 것이기에, UWB에 대해서도 지정된 주파수만을 사용하도록 하고 있고, 각 나라마다 다른 주파수 대역이 가능하기에, UWB 표준에서는 3.1 GHz~10.6 GHz 사이에 14..
UWB(Ultra Wide Band, 초광대역) 기술 분석(1/2) 몇 년마다 가끔, 기존의 기술로 해결하지 못했던 것을 해결하며 기존의 비즈니스 시장 구도 자체를 바꿔버리는 기술이 툭하니 등장하곤 합니다. 이를 와해성 기술(Desruptive Technology)라고 부르고, 이러한 와해성 기술을 빨리 캐치 업하고 이를 상품화한 기업만이 살아남습니다. 문제는 처음 와해성 기술이 나왔을 때, 이게 과연 시장을 바꿀만한 기술인지, 과연 성공해서 살아남을 수 있는 기술인지 판단이 쉽지 않습니다. 처음 이러한 기술이 나올 때는 가격도 비싸고, 여러 문제점 투성이기 때문입니다. 돌이켜 생각해보면 디지털카메라가 그랬고(이로 인해 필름, 카메라 산업 자체가 붕괴/재편되었음), 스마트 폰이 그랬고, SSD가 그랬습니다. 2020.7월 현재, UWB 기술이 그런 조짐을 보입니다. 이 ..
동물들의 이상행위 탐지를 통해 지진 조기 경보 우리나라 기사: 동물들의 '식스 센스' 이용해 지진 조기 경보 동물들의 ‘식스 센스’ 이용해 지진 조기 경보 – Sciencetimes www.sciencetimes.co.kr 관련 유튜브 동영상: youtu.be/zP8 QNAZPRD8 Ethology에 실린 연구 논문: Potential short-term earthquake forecasting by farm animal monitoring Potential short‐term earthquake forecasting by farm animal monitoring A collective of domestic farm animals repeatedly showed unusually high activity levels before earthquakes..
04-5 데이터 프레임(pandas.DataFrame) pandas 패키지의 DataFrame은 엑셀 데이터와 유사합니다. 엑셀이 가로 세로의 각 칸에 데이터가 있고, 세로축의 행과 가로축의 열이 있듯이, DataFrame도 동일한 구조를 가집니다. data : 실제 데이터 값들 index: 데이터를 구분하는 값들 columns: 데이터 항목들 아래 그림을 보면 DataFram의 data, index, columns가 뭔지 쉽게 파악이 될 것입니다. Pandas 설치하기 Pandas도 Numpy와 마찬가지고 파이썬의 기본 라이브러리가 아니기에, 추가로 설치를 해줘야 합니다. 설치 방법은 Numpy설치 때와 마찬가지로 'pip install'을 사용하면 됩니다. 1) 윈도즈 명령어 창을 연다. : "윈도 키 + R" --> "cmd" 타이핑 2) 'pip in..
04-4 배열(numpy.array) 이번 페이지에서는, 수학에서의 '행렬' 데이터를 처리할 수 있는 자료형인 numpy.array에 대해서 알아보겠습니다. 넘파이(NumPy)는 파이썬에서 과학/수학 계산을 할 수 있도록, 여러 가지 과학/수학용 자료형/함수들이 들어있는 라이브러리입니다. (과학자/수학자들이 파이썬으로 프로그래밍하다가, 필요한 기능들을 만들었고, 이것들을 집대성해서 일반인도 쓸 수 있게 공개한 것이 '넘파이' 라이브러리입니다.) 여기서는 넘파이의 행렬 계산 기능을 중심으로 살펴볼 것입니다. 왜 행렬이 필요한가? (왜 행렬까지 공부해야 하는가?) 파이썬의 기본 자료형인 리스트(list), 딕셔너리(dict), 튜플(tuple), 집합(set)을 공부했는데, 기본 자료형도 아닌 numpy.array라는 것을 왜 알아야 하는 걸까..
04-4 집합(set) 집합(Set)은 수학에서의 '집합'과 같은 성질을 같습니다. 생성은 set( [원소1, 원소2, ...] )와 같이, set( ) 메서드에 리스트를 전달해서 생성 중복된 원소가 없음 (중복된 원소를 가질 수 없음) 원소간의 순서가 없음. 집어넣은 차례대로 원소가 있는게 아님 --> 인덱스 번호로 원소를 읽을 수 없음 집합간의 연산을 통해서 교집합/합집합/차집합을 구할 수 있음 a = set([1,2,3,4]) b = set([4,5,6]) 합 = a | b print(합) # {1, 2, 3, 4, 5, 6} 교 = a & b print(교) # {4} 차 = a - b print(차) # {1, 2, 3} 위 내용만 읽고 전부 이해 되었다면, 아랫 부분에 있는 내용들 스킵하고 다음글로 넘어가도 됩니다...
04-3 튜플(tuple) 튜플(tuple)은 리스트(list)와 비슷한 기능을 가지는데, 차이점은 한 번 만든 튜플 자료들을 추가/삭제를 못한다는 것입니다. 즉, 처음에 만든 자료를 읽기만 하는 용도로 쓸 데 사용합니다. 그럼 추가/삭제를 할 수있는 리스트만 사용하지 왜 튜플이란 걸 만들어서 귀찮게 할까요? 속도 때문입니다. 추가/삭제할 수 없는 튜플은 리스트에 비해서 생성 및 읽기 속도가 빠릅니다. 리스트는 나중에 추가/삭제가 가능한 구조로 데이터를 생성하느라 시간이 걸리는데 반해, 튜플은 그런 작업이 없기에 빠릅니다. 그래서, 추가/삭제가 필요 없을 것 같은 데이터를 처리할 때는 튜플을 사용하면 좀 더 낫긴 한데, 자료가 수만 건 이상이 되지 않는 한, 사실 속도 차이를 느끼기 힘듭니다. 그냥 리스트만 사용해도 충분합니다. ..
04-2 딕셔너리(dict) 앞 페이지에서 리스트(list)에 대해 알아봤습니다. a = [1, 3, 5, 7, 9] '10보다 작은 홀수' 혹은 '어떤 학생에 대한 국어/영어/수학 점수'처럼, 여러 개의 값들을 뭉치로 다룰 수 있는 것이 '리스트'였습니다. 그런데, `학생 A의 국어/영어/수학 점수, 학생 B의 국어/영어/수학 점수,...'처럼 100명의 학생에 대한 점수들을 다뤄야 한다면 어떻게 할까요? '학생 A'에 대응하는 `국/영/수 점수`, '학생 B'에 대응하는 `국/영/수 점수` 같은 자료가 만들어져야 할 것입니다. 이러한 처리가 가능하도록 만들어진 자료형이 딕셔너리(Dictionary)입니다. 1. 생성하기 (Create) 비어있는 딕셔너리 만들기 a = {} 딕셔너리는 중괄호를 이용해서 만듭니다. (리스트는 대괄호..
04-1 리스트(list) 앞 장의 '기본 문법 익히기'에서, 어떤 약속된 문자에다가 값을 지정하고 그 값을 바꾸면서 사용할 수 있는 것을 본 바 있습니다. 변수라는 것이죠. 1부터 100까지의 합을 구하는 코드는 아래와 같고, 여기서 'sum'이 변수입니다. sum = 0 for i in range(1,101,1): sum = sum + i sum 변수가 처음에는 0이었다가 1 -> 3 -> 5 -> ... -> 5050 이렇게 변하게 됩니다. 그런데, 여기서 sum이 한 가지 값만 가지는 것이 아니고, 이렇게 변하는 모든 값을 덩어리로 가지고 있으려면 어떻게 해야 할까요? 이런 요구를 만족시킬 수 있는 게 리스트(list)입니다. 리스트형 변수를 만들면 이 변수에 여러 개의 값들을 저장할 수 있습니다. 이제 이 리스트형 변수를..