| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- Git 기초
- clone vs pull
- git
- 전기신호
- 모두의 네트워크
- 성공했으면 꿀팁! 이런거라도 적는데 그게 아니니 뭐 적을게 없네요
- 카카오맵 api
- FCS
- 안드로이드 xml 화면 오류
- 장인한과
- 약과팅 경험!
- kakaomap
- TCP/IP 모델
- 약과팅
- 역캡슐화
- 장인약과
- network
- 네트워크 기초
- android xml 오류
- KakaoMap API
- 회사 네트워크
- android xml 화면 검은색
- Android
- xml화면 검은색
- OSI 모델
- git 충돌
- 코닥 미니샷2
- xml 화면
- 가정 네트워크
- git #
- Today
- Total
괴발개발
인공지능2 (NumPy,ndim,shape,arange,zeros,ones,reshape, 슬라이싱, fancy indexing, np.sort, ndarray.sort, argsort) 본문
인공지능2 (NumPy,ndim,shape,arange,zeros,ones,reshape, 슬라이싱, fancy indexing, np.sort, ndarray.sort, argsort)
yousim 2021. 10. 21. 15:57NumPy : 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 파이썬의 라이브러리
import numpy as np //로 사용가능
ndarray : Numpy의 핵심인 다차원 행렬 자료구조 클래스
배열 a가 있다고 하자.
a.ndim : .ndim은 배열의 차원 수 or 배열의 축 수를 알 수 있다.
a.shape : .shape은 해당 배열의 (행, 열)을 알려준다.
bar = np.array(range(4)) //1차원
bbar = np.array([range(4)]) //2차원
print(bar)
print(bbar)
bar.ndim
bbar.ndim
bbar.shape
>>
[0 1 2 3]
[[0 1 2 3]]
1
2
(1, 4)
arrange : 범위내의 값을 순차적으로 가지는 배열 생성
-> seq_array = np.arange(10) // [0 1 2 3 4 5 6 7 8 9]
zeros : 배열값이 모두 0인 배열을 만드는 것
-> zero_array = np.zeros((3,2), dtype='int64') // 3행 2열의 모든 값이 0인 배열.
ones : 배열값이 모두 1인 배열을 만드는것.
-> one_array = np.ones((3,2), dtype='int64') // 3행 2열의 모든 값이 1인 배열.
reshape : 해당 배열을 n행m열로 바꾸겠다는 뜻.
-> array3 = array2.reshape(2,5) // array2를 2행 5열로 바꾼것을 array3이라고 칭함.
**
n행m열 같은 경우 n*m이 요소개수이므로 (1,10),(10,1),(5,2),(2,5)만 가능
# 행의 수는 알아서 지정, 열은 5열에 맞춰서 바꾸어진다는 뜻.
array10 = arrayx.reshape(-1,5)
# 열의 수는 알아서 지정. 행에 맞춰서 바꾸어진다는 뜻
array11 = array7.reshape(5,-1)
#-1,-2번의 인덱스 원할 때는 뒤에서 인덱스 시작 (-1부터)
array = np.arange(10)
print(array[-1])
>>9
슬라이싱
슬라이싱하며 배열의 연속적인 인덱스 요소를 출력하는것을 뜻함.
print(arrayI)
print(" index 3 ~ 6 =>", arrayI[3:6]) # in 'from : to', to is not included
# 여기서 to는 to-1 인덱스까지 출력.
>>
[0 1 2 3 4 5 6 7 8 9]
index 3 ~ 6 => [3 4 5]
print(arrayI[:5])
# 만약 프롬이 적혀있지않다면, 이는 맨처음을 의미함.
>>[0 1 2 3 4]
print(arrayI[6:])
만약 to가 적혀있지 않다면 이는 마지막을 의미함.
>>[6 7 8 9]
Fancy Indexing
배열에서 특정 요소만 행, 열을 골라 요소들을 부분 출력이 가능함.
arrayF = np.arange(25).reshape(5,5) 인 경우, 이는
[[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 11 12 13 14]
[15 16 17 18 19]
[20 21 22 23 24]]
의 형태를 가진다.
arrayF[[1,2,3],2]
# arrayF의 인덱스 기준 1,2,3행이며 열 인덱스는 2인 요소들 출력
>>array([ 7, 12, 17])
# arrayF에서 인덱스 상으로 2,3행인 부분 출력 // 뭔가 부족할땐 행이 우선이라고 생각!
arrayF[[2,3]]
>>array([[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19]])
# 1행 3열, 4행 4열..
arrayF[[1,4],[3,4]] //앞 인덱스는 행, 뒤 인덱스는 열 이라는 생각으로
# 3행 2열, 1행 1열
arrayF[[3,1],[2,1]] //앞 인덱스는 행, 뒤 인덱스는 열 이라는 생각으로
뒤에 n열까지 라고 적혀있는건 n-1열까지로 생각하면 되고! 어디열까지인지 안 적혀있으면 끝까지라고 생각하면 된다.
**colab 36번줄 참고!!!**
Boolean Indexing
: true라고 적힌 인덱스만 출력.
dataToSelect = [True, False, True, False, True, False, True, False, True, False]
arrayI[dataToSelect]
>>array([0, 2, 4, 6, 8])
이때 arrayI = np.arange(10) >> [0,1,2,3,4,5,6,7,8,9]
np.sort는 정렬이 된 새 array를 반환한다.
ndarray.sort는 원 array의 내용을 정렬을 시킨다. 반환값은 none
argsort는 정렬이 된 행렬의 인덱스를 반환한다.
(1)
org_array = np.array([3, 1, 9, 5])
sort_array = np.sort(org_array)
print('\nsort_array ==> ', sort_array)
>>org => [3 1 9 5]
(2)
sort2_array = org_array.sort()
print('\nsort2_array ==> ', sort2_array)
>>sort2_array ==> None
(3)
# 내림차순으로 정렬을 하고자 할때는 [::-1]을 적용한다. np.sort의 경우는 np.sort(a)[::-1]
print('descending ==>', org_array[::-1])