본문 바로가기

전체 글42

Numpy 데이터 정렬 # 데이터 정렬...?데이터 분석에 있어 난잡하게 구성된 데이터를 사용하는 것보다 수치형 또는 범주형 데이터의 경우 오름차순으로 정렬하여 데이터를 나열하는 것이 데이터가 가진 의미를 파악하기에도 용이한 경우가 있다. numpy에서는 이를 위해 아래와 같은 함수를 제공한다. numpy.sort()numpy.argsort()이번 포스팅에서는 위의 함수의 API Refernce을 통해 parameter와 사용법을 이해하고 이를 활용하여 데이터를 오름차순, 내림차순으로 정렬하는 방법을 예시코드와 함께 정리하겠다.  # API Reference # numpy.sort()API Reference :: numpy.sort() numpy.sort()는 기본적으로 오름차순 정렬만 지원한다. 정렬된 결과를 return값으.. 2024. 9. 12.
Numpy 데이터 조회를 위한 인덱싱 및 슬라이싱 #인덱싱 & 슬라이싱..?배열에 존재하는 특정 데이터는 인덱스를 통해 접근할 수 있다. 인덱싱을 통해 배열에 존재하는 데이터를 조회하는 것은 "배열명"[인덱스] 형태로 접근할 수 있다.  슬라이싱은 범위를 지정하여 데이터를 조회하는 방식이다."배열명"[from index : to index] from index : 슬라이싱이 시작되는 인덱스 위치이다. 생략 가능하여 default값은 0이다.to index : 슬라이싱이 종료되는 인덱스 위치이다. to index -1 위치의 데이터까지 조회되며 생략 가능하다. default는 항상 해당 배열의 마지막 인덱스이다.  # 예시 코드# 인덱싱, 슬라이싱 예시import numpy as nparr_1d = np.arange(5,15)print("1D-array .. 2024. 9. 12.
Numpy 집계 함수 # 집계함수..? 집계 함수(Aggregate Function)는 데이터를 종합하여 특정 연산을 적용하는 함수를 일컫는 말이다. Numpy의 집계함수는 아래와 같이 정리할 수 있다.  sum() :합min() : 최소값max() : 최대값cumsum() : 누적합 mean() : 평균median() : 중앙값corrcoef() : 상관계수std() : 표준편차unique() : 고유값집계 함수의 사용법은 아래와 같다. #방법 1array.sum()#방법 2np.sum(array) 사용법은 간단하나 중요한 것은 데이터의 집계방향을 신경써줘야 한다는 것이다. 직관적인 함수들이기에 API Reference는 생략하고 예시 코드로 데이터의 집계 방향에 대해서 기록하도록 한다.  # 예시 코드 :: 집계함수 사용.. 2024. 9. 12.
Numpy 기본 연산 # Numpy 기본 연산..?Nuimpy 기본 연산의 특징은 아래와 같다. 연산자(+,-,*,/,,,==,!= ...)을 이용하여 직관적인 배열 연산이 가능하다.모든 연산은 배열의 각 요소별로 적용된다. 모든 산술 연산은 Numpy모듈에 구현되어있다.  # Numpy 사칙 연산 간단한 것이니 예시 코드로 설명하겠다.import numpy as npa = np.arange(1,10).reshape(3,3)print("A :: \n",a)b= np.arange(9,0,-1).reshape(3,3)print("\nB ::\n",b)#덧셈add_operator_result = a + bprint("\nResult of A + B\n",add_operator_result)add_method_result = np... 2024. 9. 12.
Numpy ndarray shape 변경 # Numpy ndarray shape 변경..?머신 러닝을 알고리즘 적용을 위해서나 이미지 데이터를 딥러닝에 적용시 등의 사례에서 볼 수 있듯이 각 알고리즘에서 정해진 ndarray의 shape에 맞게 각 데이터의 shape 변경이 필요하다.다음은 numpy의 ndarray의 shaep을 변경하는 방법을 나엻한 것이다.  numpy.reshape()numpy.resize()numpy.newaxisnumpy.squeeze()다른 shape 변경을 위한 함수가 많이 존재하지만 대표적으로 위의 함수를 정리하도록 하겠다. # 각 함수의 API Reference 정리 예시 코드 # numpy.reshape()API Reference :: numpy.reshape()# 파라미터 정리a (array_like) : .. 2024. 9. 12.
Numpy :: 데이터 타입 # Numpy 데이터 타입 Numpy 데이터 타입은 아래와 같이 정리할 수 있다. numpy.int (정수)numpy.float (실수)numpy.complex (복소수)numpy.bool (불리언)numpy.object (파이썬 객체)numpy.str (문자열)numpy.int와 numpy.float의 경우 뒤에 bit를 의미하는 숫자를 붙여 특정 값 범위만큼의 수 표현이 가능한다.(ex:numpy.int16은 Integer(-32768 ~ 32767)범위의 수를 표현 가능, numpy.int8은 Byte(-128 ~ 127) 범위의 수를 표현 가능) # ndarray 요소 데이터 타입 변경 방법 # 방법 1 :: ndarray 생성시 인자로 dtype을 지정하는 방식import numpy as npd.. 2024. 9. 12.
Numpy 자료구조:: ndarray 생성 ndarray에 대한 설명은 이전 포스팅을 참고하면 된다.2024.09.09 - [공부한 것들../Numpy] - Numpy 자료구조 :: ndarray (N- Dimension Array) Numpy 자료구조 :: ndarray (N- Dimension Array)# Numpy 자료구조 :: ndarrayNumpy 라이브러리의 주요 자료구조는 ndarray로 다차원 데이터를 저장하며 여러 연산 및 인덱싱에 필요한 툴을 제공한다.위의 사진은 n차원의 배열을 시각화하여 표현한 것bottle-an00.tistory.com # ndarray 생성 방법ndarray 생성 방법은 아래와 같은 방법이 있다. 여러 방법에 대한 api reference를 각각 살펴보고 예시 코드를 실행해보아 ndarray 생성 방법을.. 2024. 9. 11.
Numpy 자료구조 :: ndarray (N- Dimension Array) # Numpy 자료구조 :: ndarrayNumpy 라이브러리의 주요 자료구조는 ndarray로 다차원 데이터를 저장하며 여러 연산 및 인덱싱에 필요한 툴을 제공한다.위의 사진은 n차원의 배열을 시각화하여 표현한 것이다. 위의 데이터를 저장하는 ndarray는 아래의 구성요소를 갖는다.형태 (shape)원소의 수 (size)저장된 데이터 타입 (dtype)축 (axis)각 차원의 shape와 axis 방향은 위의 그림과 같이 표현된다.Numpy의 ndarray 자료구조는 아래와 같은 장점을 가지고 있다.다차원 데이터 지원: 1차원 벡터부터 N차원 배열까지 자유롭게 다룰 수 있어 복잡한 데이터 구조를 효율적으로 관리할 수 있다.동일한 데이터 타입 유지: 배열 내 모든 요소가 같은 데이터 타입을 가지므로, .. 2024. 9. 9.
주성분 분석 PCA..?📝 PCA (Principle Component Analysis: 주성분 분석)이란 데이터분석 관련 분야에서 "데이터의 특징을 최대한 보존하면서 차원을 낮추는 방법"으로 사용되었다.머신러닝이나 딥러닝에서 데이터를 분석하는 것에 있어 차원이 많아질수록 복잡하고 직관적으로 데이터를 해석할 수 없다.따라서 데이터의 특징을 최대한 유지하면서 차원을 축소하는 과정은 중요하다. 물론 자율주행 시스템의 인지관련에서도 카메라 비전쪽에서 딥러닝을 사용하거나 라이다 딥러닝을 할 경우에도 데이터 분석이 중요하기에 차원축소 용도로 PCA가 활용될 수 있다.또한, 여러 논문에서의 내용을 바탕으로 PCA가 차원 축소 뿐만 아니라 다양한 데이터 분석에 어떻게 사용될 수 있는지도 정리하였다.(라이다 pcd를 기하학적인 .. 2024. 9. 3.
2024_SHARK 미션 별 구현 내용 정리 LiDAR 부분 정리 #미션 소개대회에서는 예선과 본선 ( 본선과 결선 )으로 나누어 진행되었다. 예선과 본선에서는 다른 시나리오를 불러와 각 팀에서 구현한 자율주행 시스템을 평가하였다. 시나리오 난이도는 예선에서는 거의 모든 팀이 완주할 수 있을 만큼 난이도였으며 본선에 올라갈 4개의 팀은 충돌이 없었던 팀 중 랩타임이 적은 팀이 올라갔다. 예선과 본선의 미션을 정리하면 아래와 같다. # 예선차간 간격 유지 1정적 장애물 회피GPS 음영 구역 1동적 장애물 회피차간 간격 유지 2정지 # 본선차간 간격 유지 1정적 장애물 회피GPS 음영 구역 1주차 차간 간격 유지 2GPS 음영 구역 2신호등돌발 장애물정지 미션 별 주행 영상은 아래와 같다. LiDAR만을 활용하여 주행한 미션에 대해서는 직접 준비한 것이니 자세히 정리하지만.. 2024. 9. 2.
2024_SHARK_LiDAR 전체 프로세스 flow chart 및 정리 [LiDAR 전체 프로세스 flow chart ] 크게 Offline과 Online으로 나누어 프로세스가 진행되며 Offline에서는 GPSLAM을 통해 lane, ground, nonground에 대한 PCD map을 만든다. 생성한 PCD map은 Online에서 실시간 LiDAR data에서 ROI영역을 설정에 활용된다. GPSLAM은 직접 구현한 것으로 이름만 SLAM이지 SLAM이라고 할 수도 없는 조잡한 코드이다. SLAM 알고리즘을 활용하여 PCD map을 만들지 않은 이유는 제작해보았을 때 불필요한 loop closure가 발동되어 부정확한 map이 만들어 졌으며(LeGO-LOAM, LIO-SAM, FAST-LIO를 사용해보았다.) 모라이 시뮬레이터에서 rate도 높고 노이즈가 없는 정확한.. 2024. 9. 2.
2024 SHARK 자율 주행 대회 [SHARK 자율주행 대회] 대회는 대학원생 및 학부생으로 이루어진 최대 5명의 팀원으로 참가할 수 있는 대회로 모라이 시뮬레이터의 성남 시청 맵에서 주어진 여러 미션을 수행하는 것을 통해 자율주행을 성능을 시험하였다. 내가 속한 팀은 학부생 5명으로 구성된 팀이었고 팀원은 판단 제어 2명, 카메라 2명, 라이다 1명으로 구성되었다. SHARK 자율주행 대회에서 PC를 각 팀에서 따로 준비해야 했으며 우리 팀은 랩실에 있던 뚱뚱한 pc를 가져갔다.  대회는 성남 글로벌 융합 센터에서 본선 및 결선이 진행되었다. 진행 방식은 오전에는 본선(당일 대회에서는 예선, 본선이라는 표현을 사용하였지만 위의 포스터에서 팀 선발을 예선으로 칭하였기에 본선, 결선으로 설명하겠다)에서 비교적 쉬운 난이도의 시나리오로 구현.. 2024. 8. 29.