< Slicing - 잘라서 가져오기 >
1. ndarray[start:end]
2. ndarray[start:]
3. ndarray[:end]
# 뭐 부터 뭐 까지 => 3시 ~ 5시
# 3 : 5+1
# 홍길동이라는 이름을 예시로 원하는 인덱스 위치에 결과만 출력
fullname = '홍길동'
fullname[1:2+1]
'길동'
# 어디서부터 시작해서 끝까지
fullname[1:]
'길동'
# 1차원 배열 생성
x = np.arange(2, 10+1)
x
x[2 : 5+1] => 2번 인덱스 위치부터 5번 위치까지 가져오기
array([4, 5, 6, 7])
# X 라는 다차원 배열에서 원하는 위치값 가져오기
array([[76, 95, 49, 98, 11],
[19, 19, 29, 64, 80],
[81, 28, 80, 27, 42],
[54, 85, 4, 83, 10]])
# 다차원 배열일 경우 : (콜론) 을 기준으로 좌측이 행 우측이 열의 위치
# 즉, 1번 행의 1번 인덱스 위치부터 3번 위치까지 가져오기
X[1, 1 : 3+1]
array([19, 29, 64])
X[ [0,2] , ] => 두개 이상의 결과값을 따로 불러올때는 리스트에 담아서 []
array([[76, 95, 49, 98, 11],
[81, 28, 80, 27, 42]])
# 열만 처리하고 싶을때는 행 자리에 전체를 처리하겠다는 의미로 : (콜론) 을 사용한다. 외워야함!!!
X[ : , [1,3,4] ]
array([[95, 98, 11],
[19, 64, 80],
[28, 27, 42],
[85, 83, 10]])
# 특정 위치의 데이터값을 변경하고 싶을때 !
X = np.random.randint(1, 100, (3,4) )
X
array([[99, 87, 52, 61],
[74, 76, 88, 9],
[12, 86, 89, 46]])
X[ 1,0 ] = 100 => 2행 1열의 값을 슬라이싱해 가져와서 100으로 바꾼다
X
array([[ 99, 87, 52, 61],
[100, 76, 88, 9],
[ 12, 86, 89, 46]])
< Slicing 할때, 주의할 점!!! >
# 상단의 X 변수를 그대로 가져와 실행
# 1열을 제외한 나머지 전체 열만 따로 변수로 저장한다
Y = X[ : , 1:]
Y
array([[87, 52, 61],
[76, 88, 9],
[86, 89, 46]])
# 때어온 Y 변수 안에 데이터값을 변경
Y[ 2,2 ] = 100
Y
array([[ 87, 52, 61],
[ 76, 88, 9],
[ 86, 89, 100]])
# 이후 X를 호출하면
X
array([[ 99, 87, 52, 61],
[100, 76, 88, 9],
[ 12, 86, 89, 100]])
*** X에서 Y를 때어와서 Y에서 데이터를 바꾸면 원본값인 X도 값이 변경되어 버림 추후 오류가 출력될수 있음
< Copy >
그러모르 copy 문구를 사용하여 원본데이터의 영향을 주지 않도록 일정 데이터를 복사해서 변경한다.
X
array([[ 99, 87, 52, 61],
[100, 76, 88, 9],
[ 12, 86, 89, 100]])
Y = X[ : , 1 : ].copy()
Y
rray([[ 87, 52, 61],
[ 76, 88, 9],
[ 86, 89, 100]])
Y[2,2] = 0
Y
array([[87, 52, 61],
[76, 88, 9],
[86, 89, 0]])
X
array([[ 99, 87, 52, 61],
[100, 76, 88, 9],
[ 12, 86, 89, 100]])
*** 이번에는 X 데이터값이 변경되지 않은것을 확인할수 있다
< 원하는 행, 열을 슬라이싱해서 가져오는 방법 >
X
array([[ 99, 87, 52, 61],
[100, 76, 88, 9],
[ 12, 86, 89, 100]])
# 해당 행렬에서 1행에 1,2,3열 3행에 1,2,3열만 가져오려면???
# 데이터 억세스 하는것 계속 연습할것..! 1차 배열 2차 배열 원하는 값만 가져오고 특정 값만 바꾸는것 계속 연습!! 인덱싱 하여 원하는 값 가져오는것도 연습!!!
# 0,2 번 인덱스 행의 0,1,2 인덱스 열까지만 가져오기
X[ [0,2] , : 3 ]
array([[99, 87, 52],
[12, 86, 89]])
< 중복된것 제거한 값만 리스트로 가져오기 >
# 랜던함 일차원 (중복값이 출력되도록) 배열 생성
x = np.random.randint(1, 10, 20)
x
array([5, 4, 3, 6, 4, 9, 1, 4, 3, 1, 1, 7, 8, 7, 4, 4, 3, 8, 1, 6])
# 중복된 값을 제거하고 유니크한 값만 출력 np.unique
np.unique(x)
array([1, 3, 4, 5, 6, 7, 8, 9])
# 중복이 제거된 데이터값의 크기를 확인하고 싶을땐
np.unique(x).size
8
다음 게시글에서 계속
'PYTHON LIBRARY > NumPy Library' 카테고리의 다른 글
Python NumPy로 데이터 분석하기 : Boolean 연산부터 Broadcasting까지 (0) | 2024.04.08 |
---|---|
Python Numpy로 데이터 분석하기: 최대값, 최소값, 평균 등 기초 통계 및 축(axis)별 연산 (0) | 2024.04.05 |
Python NumPy의 기본 함수와 메서드 : 배열 생성부터 형태 변환까지 (0) | 2024.04.04 |
Python에서 데이터 저장 및 불러오기 : NumPy의 save와 load 함수 사용법 (0) | 2024.04.04 |
Python과 NumPy 기초 : 다차원 배열과 선형대수학 라이브러리 시작하기 (1) | 2024.04.03 |