반응형
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 | 31 |
Tags
- 선형회귀
- 판다스
- 영국석사
- 결정트리
- 코드잇
- SQL
- sql연습문제
- 유학생
- 오늘도코드잇
- 코딩공부
- 행렬
- 나혼자코딩
- 데이터분석
- 코드잇 TIL
- 파이썬
- HTML
- numpy
- 코딩독학
- 코드잇TIL
- 경사하강법
- matplotlib
- 다항회귀
- 머신러닝
- 코딩
- Seaborn
- CSS
- 윈도우함수
- for반복문
- 로지스틱회귀
- 런던
Archives
- Today
- Total
영국 척척석사 유학생 일기장👩🏻🎓
(파이썬) NumPy, ndarray의 요소에 액세스하고 요소 삭제/삽입하기 본문
728x90
반응형
지난 글에서 NumPy 에서 유용한 내장 함수를 이용해 다양한 ndarray를 만드는 방법에 대해 알아보았습니다. ndarray는 변경가능(mutable) 합니다. 즉, ndarray를 만든 후에 안에 있는 요소들을 변경할 수 있습니다. 또한, 슬라이싱(slicing)도 할 수 있습니다. 머신러닝에서 데이터를 훈련 세트와 교차검증 세트, 테스트 세트로 분할하는 등 슬라이싱을 사용하여 데이터를 분할하는데 유용합니다.
이번 글에서는 인덱싱을 이용하여 ndarray의 요소들에 액세스하거나 요소들을 변경하는 방법에 대해 알아보겠습니다.
🔻(참고)NumPy 함수🔻
1. 1차원 배열
1) 개별 요소에 액세스하기
- 대괄호 [] 안에 인덱스를 사용하여 요소에 액세스할 수 있습니다.
- NumPy에서는 양수 및 음수 인덱스를 모두 사용하여 ndarray 요소에 액세스할 수 있습니다.
- 양수 인덱스는 배열의 시작 부분에서, 음수 인덱스는 배열의 끝부분에서 요소에 액세스하기 위해 사용됩니다.
x = np.array([1, 2, 3, 4, 5])
print('x = ', x)
print('This is First Element in x:', x[0])
print('This is Second Element in x:', x[1])
print('This is Fifth (Last) Element in x:', x[4])
print('This is First Element in x:', x[-5])
print('This is Second Element in x:', x[-4])
print('This is Fifth (Last) Element in x:', x[-1])
>>> x = [1 2 3 4 5]
This is First Element in x: 1
This is Second Element in x: 2
This is Fifth (Last) Element in x: 5
This is First Element in x: 1
This is Second Element in x: 2
This is Fifth (Last) Element in x: 5
- 여기서 주의해야 할 점은 첫 번째 요소에 액세스하려면 인덱스 1이 아니라 인덱스 0을 사용해야 한다는 것입니다.
2) 요소 변경하기
x = np.array([1, 2, 3, 4, 5])
print('Original: x = ', x)
x[3] = 20
print('Modified: x = ', x)
>>> Original: x = [1 2 3 4 5]
Modified: x = [ 1 2 3 20 5]
2. 2차원 배열
1) 개별 요소에 액세스하기
- 위와 비슷하게 2차원 ndarray의 특정한 요소에 액세스하고 변경할 수도 있습니다.
- 2차원 요소에 액세스하려면 [행, 열] 양식으로 2개의 인덱스를 제공해야 합니다.
X = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print('X = \n', X)
print('This is (0,0) Element in X:', X[0,0])
print('This is (0,1) Element in X:', X[0,1])
print('This is (2,2) Element in X:', X[2,2])
>>> X =
[[1 2 3]
[4 5 6]
[7 8 9]]
This is (0,0) Element in X: 1
This is (0,1) Element in X: 2
This is (2,2) Element in X: 9
- 인덱스 [0, 0]은 첫번째 행, 첫번째 열에 있는 요소를 나타냅니다.
2) 요소 변경하기
X = np.array([[1,2,3],[4,5,6],[7,8,9]])
print('Original:\n X = \n', X)
X[0,0] = 20
print('Modified:\n X = \n', X)
>>> Original:
X =
[[1 2 3]
[4 5 6]
[7 8 9]]
Modified:
X =
[[20 2 3]
[ 4 5 6]
[ 7 8 9]]
3. 요소 삭제하기 np.delete
- np.delete(ndarray, elements, axis) 함수를 사용하여 요소를 삭제할 수 있습니다.
- 지정된 axis(축)을 따라, 주어진 ndarray에서, 주어진 elements(요소) 리스트를 delete(삭제) 합니다.
- 1차원 ndarray 인 경우 키워드 axis 가 필요하지 않습니다.
- 2차원 ndarray 인 경우 axis = 0을 사용하여 행을 선택하고, axis = 1을 사용하여 열을 선택합니다.
x = np.array([1, 2, 3, 4, 5])
Y = np.array([[1,2,3],[4,5,6],[7,8,9]])
print('Original x = ', x)
# We delete the first and last element of x
x = np.delete(x, [0,4])
print('Modified x = ', x)
print('Original Y = \n', Y)
# We delete the first row of y
w = np.delete(Y, 0, axis=0)
# We delete the first and last column of y
v = np.delete(Y, [0, 2], axis =1)
print('w = \n', w)
print('v = \n', v)
>>> Original
x = [1 2 3 4 5]
Modified x = [2 3 4]
Original
Y = [[1 2 3]
[4 5 6]
[7 8 9]]
w = [[4 5 6]
[7 8 9]]
v = [[2]
[5]
[8]]
4. 요소 추가하기 np.append
- np.append(ndarray, elements, axis) 함수를 이용하여 ndarray 에 값을 추가할 수 있습니다.
- 이 함수는 지정된 axis(축)을 따라, 주어진 elements(요소) 리스트를 ndarray에 추가합니다.
x = np.array([1, 2, 3, 4, 5])
print('Original x = ', x)
# We append the integer 6 to x
x = np.append(x, 6)
print('x = ', x)
# We append the integer 7 and 8 to x
x = np.append(x, [7, 8])
print('x = ', x)
>>> Original x = [1 2 3 4 5]
x = [1 2 3 4 5 6]
x = [1 2 3 4 5 6 7 8]
Y = np.array([[1,2,3],[4,5,6]])
print('Original Y = \n', Y)
# We append a new row containing 7,8,9 to y
v = np.append(Y, [[7, 8, 9]], axis = 0)
# We append a new column containing 9 and 10 to y
w = np.append(Y, [[9], [10]], axis=1)
print('v = \n', v)
print('q = \n', q)
>>> Original Y =
[[1 2 3]
[4 5 6]]
v = [[1 2 3]
[4 5 6]
[7 8 9]]
q = [[ 1 2 3 9]
[ 4 5 6 10]]
5. 요소 삽입하기 np.insert
- np.insert(ndarray, indexm elements, axis) 함수를 사용하여 ndarray 값을 삽입할 수 있습니다.
- 이 함수는 지정된 axis(축)을 따라 주어진 index(인덱스)의 바로 앞에서 주어진 elements(요소) 리스트를 ndarray에 삽입합니다.
x = np.array([1, 2, 5, 6, 7])
print('Original x = ', x)
# We insert the integer 3 and 4 between 2 and 5 in x.
x = np.insert(x, 2, [3, 4])
print('x = ', x)
>>> Original x = [1 2 5 6 7]
x = [1 2 3 4 5 6 7]
Y = np.array([[1,2,3],[7,8,9]])
print('Original Y = \n', Y)
# We insert a row between the first and last row of y
w = np.insert(Y, 1, [4, 5, 6], axis=0)
# We insert a column full of 5s between the first and second column of y
v = np.insert(Y, 1, 5, axis=1)
print('w = \n', w)
print('v = \n', v)
>>> Original Y =
[[1 2 3]
[7 8 9]]
w = [[1 2 3]
[4 5 6]
[7 8 9]]
v = [[1 5 2 3]
[7 5 8 9]]
6. 배열 쌓기
1) np.hstack (가로로 쌓기)
- np.hstack(sequunce_of_ndarray) : 배열을 수평 방향으로(열 방향으로) 차례로 쌓아서 만든 스택 배열 리턴
2) np.vstack (세로로 쌓기)
- np.vstack(sequence_of_ndarray) : 배열을 수직 방향으로(행 방향으로) 차례로 쌓아서 만든 최소 2차원 스택 배열 리턴
x = np.array([1,2])
Y = np.array([[3,4],[5,6]])
print('x = ', x)
print('Y = \n', Y)
# We stack x on top of Y
z = np.vstack((x, Y))
# We stack x on the right of Y.
# We need to reshape x in order to stack it on the right of Y.
w = np.hstack((Y, x.reshape(2, 1)))
print('z = \n', z)
print('w = \n', w)
>>> x = [1 2]
Y = [[3 4]
[5 6]]
z = [[1 2]
[3 4]
[5 6]]
w = [[3 4 1]
[5 6 2]]
728x90
반응형
'코딩공부 > Python' 카테고리의 다른 글
(파이썬) NumPy 부울 값 인덱싱, 집합 연산, np.sort() 정렬 (1) | 2024.06.14 |
---|---|
(파이썬) NumPy 슬라이싱 및 복사, 대각 요소 추출, 고유한 값 리턴하기 (1) | 2024.06.14 |
(파이썬) NumPy 넘파이 내장 함수 총정리 (0) | 2024.06.12 |
(파이썬) 람다(lambda)함수 개념과 예시 및 map, filter 함수와 같이 응용하기 (0) | 2024.06.11 |
(파이썬) def 함수 문서화하기 위한 독스트링(docstring) 쉽게 알아보기 (1) | 2024.06.11 |