반응형
Numpy는 파이썬에서 배열(array)이라는 객체를 만들고, 이를 통한 선형대수 및 통계 연산을 하는데 매우 유용한 라이브러리이다.
Index
배열 혹은 행렬을 만드는 예시
array1 = np.array([1,2,3]) #array 함수는 입력된 객체를 Numpy 배열 형식으로 반환하는 함수
print('array1 type:',type(array1)) # array 의 type 은 "numpy.ndarray" 이다.
print('array1 array 형태:',array1.shape) # 반환값 (3,)
array3 = np.array([[1,2,3]])
print('array2 type:',type(array3))
print('array2 array 형태:',array3.shape) # 반환값 (1,3)
array2 = np.array([[1,2,3],[2,3,4]])
print('array2 type:',type(array2))
print('array2 array 형태:',array2.shape) # 반환값 (2,3)
arange 함수를 이용한 배열생성 및 reshape 활용 방법
array1 = np.arange(1,9) #start 부터 stop 까지 균일간격으로 숫자 생성
print('array:\n', array1, array1.shape) # 반환값: [1 2 3 4 5 6 7 8] (8,)
array3d = array1.reshape((2,2,2))
print('array3d:\n', array3d) # 3차원: 2행2열의 행렬 2개 생성
array2d = array3d.reshape(-1,1) #reshape(-1,n) 의 의미는 n 은 고정하고 첫번째 차원의 크기를 자동으로 계산
print('array2d:\n', array2d, array2d.shape) # (8행 1열짜리 2차원 행렬생성)
배열(array)의 여러가지 인덱싱(indexing), 슬라이싱(slicing) 방법
array3d = np.arange(1,10).reshape(3,3)
print(array3d)
print(array3d[1,2]) #인덱싱 :2행3열의 숫자 반환
print(array3d[0:2,0:2]) #슬라이싱
print(array3d[1:,:]) #슬라이싱: 2,3행만 반환
print(array3d[[1,0],1:3]) #팬시 인덱싱 : 리스트나 ndarray 로 인덱스 집합을 지정
print(array3d[array3d>5], array3d>5, sep='\n')
#불린 인덱싱 : [] 내에 조건문에 해당하는 값만 추출
#첫번째는 5초과하는 원소들을 array형식으로 반환, 두번째는 5초과 여부를 T/F 불린으로 행렬반환
배열/행렬의 정렬방법
array = np.array([3,1,9,5])
sort_array = np.sort(array) #원본 array 객체는 건들지 않음
print(sort_array) #[1,3,9,5]
sort_array2 = array.sort() #ndarray.sort() 는 반환값이 None이며, 대신 원본 ndarray 를 정렬해줌
print(sort_array2) # None
sort_array3 = np.sort(array)[::-1] #내림차순 정렬
print(sort_array3)
array2 = np.array([[8,12]
,[7,15]])
array2s = np.sort(array2, axis=0) # 2차원 행렬의 정렬 axis 0=열, 1=행
print(array2s) # 반환 [[7, 12], [8,15]]
argsort() : 정렬된 행렬의 인덱스 반환하기
주어진 배열의 각 요소를 오름차순 정렬한 후, 각 요소의 기존 인덱스를 반환한다.
array = np.array([3,1,9,5])
sort_index_array = np.argsort(array) #주어진 배열의 각 요소를 정렬한 후, 해당 요소의 기존 인덱스를 반환하는 함수입니다
print(sort_index_array) #[1,0,3,2]
#argsort 활용예시 : 성적순으로 학생이름 출력하기
name = np.array(['맹구','짱구','영희','미선','네네','짱아'])
score = np.array([99,92,67,94,35,97])
score_index = np.argsort(score)
print(score_index) [4 2 1 3 5 0]
print(name[score_index]) # 점수 낮은 이름순서 정렬
print(score[score_index], type(score_index), type(score))
행렬 곱(내적)과 전치행렬 구하기
A = np.array([[1,2,3],[4,5,6]])
B = np.array([[7,8],[9,10],[11,12]])
print(A,B, sep='\n')
print(np.dot(A,B)) # 행렬 곱
print(np.transpose(A))
반응형
'Study > Python' 카테고리의 다른 글
Pandas 기본 활용법 (2) | 2023.05.26 |
---|---|
[기초문법] 파일의 읽고 쓰기 (1) | 2023.03.06 |
[기초문법] 모듈(Module)과 패키지(Package) (1) | 2023.03.05 |
[기초문법] 사용자 정의 함수 , lambda 함수 (1) | 2023.02.28 |
[기초문법] Class, Object(Instance), Method 이해 (1) | 2023.02.27 |
댓글