일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 빅데이터활용공모전
- 구구단python
- 이미지데이터라벨링
- python decolator
- 단속적근로자
- timer python
- 파이썬
- 내장함수날코딩
- AIHub
- zerobase
- 파이썬실행시간측정
- 문장고치기python
- 데이터사이언스스쿨
- numpyboolean
- numpy기본개념
- 감시직근로자
- 넘파이슬라이싱
- ucfirst
- 제로베이스데이터사이언스과정
- SequentialSearch
- yolov4
- vgg
- 파이썬 비밀번호입력
- Python
- 넘파이인덱스
- python내장함수
- raise python
- 인공지능공모전
- 제로베이스데이터사이언스
- 제로베이스
- Today
- Total
개발자에서 전직중🔥
[Python for Data Analysis] Numpy index&slicing Study 본문
Numpy 색인과 슬라이싱 기초
1-1. 1차원 Numpy배열 생성
먼저 numpy import하기
import numpy as np
arr = np.arange(10)
arr
Out[4]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
arr 이라는 이름의 Numpy배열을 생성한다.
np.arange(n) -> 0부터 (n-1)까지의 값을 갖는 배열을 생성한다.
arr을 in하여 잘 생성되었는지 확인.
1-2. 1차원 Numpy배열 슬라이싱
arr[5:8]
Out[6]: array([5, 6, 7])
arr[5:8] = 12
arr
Out[8]: array([ 0, 1, 2, 3, 4, 12, 12, 12, 8, 9])
arr_slice = arr[5:8]
arr_slice
Out[10]: array([12, 12, 12])
arr[5:8] -> arr배열의 5번 인덱스 값~8번 인덱스 값까지 슬라이싱
arr[5:8] = 12 -> arr배열의 5번 인덱스 값~8번인덱스 값을 12로 바꿈
arr_slice = arr[5:8] -> arr배열의 5번 인덱스 값~8번인덱스 값까지 슬라이싱하여 arr_slice라는 또 다른 배열 생성
arr_slice[1] = 12345
arr
Out[12]:
array([ 0, 1, 2, 3, 4, 12, 12345, 12, 8,
9])
arr_slice[:] = 64
arr
Out[14]: array([ 0, 1, 2, 3, 4, 64, 64, 64, 8, 9])
arr_slice[1] = 12345 -> arr_slice의 1번 인덱스 값을 12345 바꿈
arr_slice[:] = 64 -> arr_slice의 모든 값을 64로 바꿈
2-1. 2차원 Numpy배열 슬라이싱
arr2d = np.array([[1,2,3], [4,5,6], [7,8,9]])
arr2d[2]
Out[16]: array([7, 8, 9])
arr2d = np.array([[1,2,3], [4,5,6], [7,8,9]]) -> arr2d에 2차원 배열 생성
- 1차원 배열과 다르게 스칼라값이 아닌, 배열을 요소로 함.
arr2d[2] -> arr2d의 2번째 인덱스 확인
out -> array([7,8,9]) 나오는것 확인.
2-2. 2차원 Numpy배열 인덱스
arr2d[0][2]
Out[17]: 3
arr2d[0,2]
Out[18]: 3
arr2d[0][2] & arr2d[0,2] -> 이 두 표현은 모두 arr2d의 0번 인덱스 배열의 2번 인덱스
즉, arr2d의 (0,2)의 값을 찾는 것이다.
3-1. 3차원 Numpy배열 슬라이싱
arr3d = np.array([[[1,2,3],[4,5,6]], [[7,8,9],[10,11,12]]])
arr3d
Out[4]:
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]])
3차원 Numpy 배열을 생성하여 arr3d에 넣기.
arr3d[0]
Out[5]:
array([[1, 2, 3],
[4, 5, 6]])
arr3d[0] -> 3차원 배열의 0번째 인덱스를 확인해보면, 2x3크기의 배열이 있음을 확인가능.
old_values = arr3d[0].copy()
arr3d[0] = 42
arr3d
Out[8]:
array([[[42, 42, 42],
[42, 42, 42]],
[[ 7, 8, 9],
[10, 11, 12]]])
arr3d[0] = old_values
arr3d
Out[10]:
array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]])
old_values 에 arr3d[0]을 복사해서 넣어두기.
arr3d[0] = 42 -> arr3d의 0번째 인덱스의 값을 모두 42로 바꿈.
arr3d[0] = old_values -> arr3d[0]번째 값을 미리 복사해둔 이전 값을 넣어 되돌리기.
3-2. 3차원 Numpy배열 인덱스
arr3d[1,0]
Out[11]: array([7, 8, 9])
arr3d[1,0] -> 2차원 배열에서와 마찬가지로 1번인덱스의 0번째 인덱스
즉, (1,0)의 값을 찾는 것.
x= arr3d[1]
x
Out[13]:
array([[ 7, 8, 9],
[10, 11, 12]])
x[0]
Out[14]: array([7, 8, 9])
복잡하지만 arr3d의 1번째 인덱스만 슬라이싱한 후, 1번째 인덱스에서 또 0번째 인덱스만 슬라이싱 하는 방법도 있다.
'💻 개발 > 👾 AI' 카테고리의 다른 글
[sympy] 수치적분 quad함수 오류 (0) | 2021.09.19 |
---|---|
sympy.Symbol()의 사용 및 의미 (0) | 2021.09.07 |
[jupyter notebook] %matplotlib inline 의 의미 (0) | 2021.09.07 |
[R] shp파일 불러오기 오류 (0) | 2020.12.05 |
[Python for Data Analysis] Numpy ndarray 'Boolean' Study (0) | 2020.10.20 |