반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 다항회귀
- 코드잇TIL
- 머신러닝
- Seaborn
- 판다스
- 행렬
- 코딩독학
- 결정트리
- 코딩공부
- CSS
- 나혼자코딩
- 로지스틱회귀
- matplotlib
- 코드잇 TIL
- numpy
- 경사하강법
- 코드잇
- for반복문
- 유학생
- 파이썬
- HTML
- sql연습문제
- 코딩
- 선형회귀
- 윈도우함수
- 데이터분석
- SQL
- 런던
- 영국석사
- 오늘도코드잇
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(파이썬) NumPy 부울 값 인덱싱, 집합 연산, np.sort() 정렬 본문
728x90
반응형
이전 글에서 NumPy의 슬라이싱을 이용하여 요소들을 선택하는 방법을 알아보았습니다. 선택하려는 요소의 정확한 인덱스를 알고 있을 때는 그 방법이 유용하지만, 선택하려는 요소의 인덱스를 모르는 경우도 있습니다. 이번 글에서는 이러한 경우 유용한 부울 값 인덱싱에 대해 알아보겠습니다.
🔻(참고)슬라이싱🔻
1. 부울 값 인덱싱
X = np.arange(25).reshape(5, 5)
print('Original X = \n', X)
>>> Original X = [[ 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]]
print('The elements in X that are greater than 10:', X[X > 10])
print('The elements in X that less than or equal to 7:', X[X <= 7])
print('The elements in X that are between 10 and 17:', X[(X > 10) & (X < 17)])
>>> The elements in X that are greater than 10: [11 12 13 14 15 16 17 18 19 20 21 22 23 24]
The elements in X that less than or equal to 7: [0 1 2 3 4 5 6 7]
The elements in X that are between 10 and 17: [11 12 13 14 15 16]
# We use Boolean indexing to assign the elements that are between 10 and 17 the value of -1
X[(X > 10) & (X < 17)] = -1
print('X = \n', X)
>>> X = [[ 0 1 2 3 4]
[ 5 6 7 8 9]
[10 -1 -1 -1 -1]
[-1 -1 17 18 19]
[20 21 22 23 24]]
2. 집합 연산
- 또한, 집합 연산을 사용할 수 있습니다. 두 ndarray들의 공통 요소를 찾으려는 경우 유용합니다.
x = np.array([1, 2, 3, 4, 5])
y = np.array([6, 7, 2, 8, 4])
print('x = ', x)
print('y = ', y)
>>> x = [1 2 3 4 5]
y = [6 7 2 8 4]
print('The elements that are both in x and y:', np.intersect1d(x,y))
print('The elements that are in x that are not in y:', np.setdiff1d(x,y))
print('All the elements of x and y:', np.union1d(x,y))
>>> The elements that are both in x and y: [2 4]
The elements that are in x that are not in y: [1 3 5]
All the elements of x and y: [1 2 3 4 5 6 7 8]
3. numpy.ndarray.sort 메소드
nparray.sort(axis=-1, kind=None, order=None)
- 위의 메소드는 원본 배열을 정렬합니다. 모든 인수는 선택사항입니다.
- 앞에서 살펴본 다른 함수들과 마찬가지로, sort는 함수 뿐만 아니라 메소드로도 사용할 수 있습니다.
- 이 경우, 차이점은 데이터가 메모리에 저장되는 방식입니다.
- numpy.sort()를 함수로써 사용하면 ndarray는 다른 곳에서 정렬됩니다. 즉, 원본 ndarray를 변경하여 정렬하지 않습니다.
- numpy.ndarray.sort()를 메소드로써 사용하면 ndarray.sort()는 원본 ndarray를 정렬합니다. 즉, 원본 배열이 정렬된 배열로 변경됩니다.
1) sort() 함수로 1차원 배열 정렬하기
x = np.random.randint(1, 11, size=(10, ))
print('Original x = ', x)
>>> Original x = [9 6 4 4 9 4 8 4 4 7]
print('Sorted x (out of place):', np.sort(x))
>>> Sorted x (out of place): [4 4 4 4 4 6 7 8 9 9]
print('x after sorting:', x)
>>> x after sorting: [9 6 4 4 9 4 8 4 4 7]
- np.sort() 는 배열을 정렬하지만 반복된 값들이 있으면 그 값들을 정렬된 배열에 남깁니다.
- 원한다면 unique()함수를 사용할 수도 있습니다.
print(np.unique(x))
>>> [4 6 7 8 9]
2) sort() 메소드로 1차원 배열 정렬하기
x = np.random.randint(1,11,size=(10,))
print('Original x = ', x)
>>> Original x = [9 9 8 1 1 4 3 7 2 8]
x.sort()
print('x after sorting:', x)
>>> x after sorting: [1 1 2 3 4 7 8 8 9 9]
3) sort 함수로 2차원 배열 정렬하기
numpy.sort(array, axis=-1, kind=None, order=None)
- 이 구문은 정렬된 배열 사본을 리턴합니다.
- axis 는 정렬하는 축을 나타내고 -1부터 (ndim-1)까지의 범위에 있는 값들을 취할 수 있습니다.
- 축은 주어진 2차원 ndarray에서 다음과 같은 값들을 취할 수 있습니다.
- 값을 지정하지 않으면 기본값은 axis = -1 입니다. 마지막 축을 따라 정렬합니다.
- axis = None이라고 지정하면 1차원 배열을 리턴하게 됩니다.
- axis = 0 이라고 지정하면, 함수는 다른 요소에 영향을 미치지 않고 한 번에 한 열씩 모든 행을 정렬합니다. 즉, 각각의 열이 개별적으로 정렬됩니다. (세로,위 아래)
- axis = 1의 출력 결과는 axis = 0 일 때와 반대입니다. 각각의 행이 개별적으로 정렬됩니다. (가로, 좌 우)
X = np.random.randint(1,11,size=(5,5))
print('Original X = \n', X)
>>> Original X =
[[6 1 7 6 3]
[3 9 8 3 5]
[6 5 8 9 3]
[2 1 5 7 7]
[9 8 1 9 8]]
print('X with sorted columns :\n', np.sort(X, axis = 0))
>>> X with sorted columns :
[[2 1 1 3 3]
[3 1 5 6 3]
[6 5 7 7 5]
[6 8 8 9 7]
[9 9 8 9 8]]
print('X with sorted rows :\n', np.sort(X, axis = 1))
>>> X with sorted rows :
[[1 3 6 6 7]
[3 3 5 8 9]
[3 5 6 8 9]
[1 2 5 7 7]
[1 8 8 9 9]]
728x90
반응형
'코딩공부 > Python' 카테고리의 다른 글
(파이썬) 패키지의 개념과 임포트(import)하는 여러 가지 방법, init 파일, all 특수 변수 총정리 (0) | 2024.06.16 |
---|---|
(파이썬) 모듈과 스크립트의 차이점 총정리 (0) | 2024.06.16 |
(파이썬) NumPy 슬라이싱 및 복사, 대각 요소 추출, 고유한 값 리턴하기 (1) | 2024.06.14 |
(파이썬) NumPy, ndarray의 요소에 액세스하고 요소 삭제/삽입하기 (0) | 2024.06.12 |
(파이썬) NumPy 넘파이 내장 함수 총정리 (0) | 2024.06.12 |