Python/Python 코테 준비
Numpy 라이브러리 (2)
안정민
2024. 5. 1. 13:24
1. Array끼리 합치기 (수직, 수평 결합)
tmp = np.array([[1,1],[2,2]])
tmp1 = np.array([[3,3],[4,4]])
vstack_tmp = np.v_stack(tmp, tmp1)
hstack_tmp = np.h_stack(tmp, tmp1)
#vstack_tmp 출력 결과
#[[1 1][2 2][3 3][4 4]]
#hstack_tmp 출력 결과
#[[1 1 3 3][2 2 4 4]]
- numpy는 두 개의 array에 대해서 수직 또는 수평으로 결합하는 코드를 제공한다.
2. array별 연산
3. Unique한 원소 찾기
test = np.array([2,2,3,3,3,3,4,4,5,5,6,6,6])
unique_test = np.unique(test)
print(unique_test)
#결과 : [2 3 4 5 6]
unique_index_test = np.unique(test, return_index = True)
print(unique_index_test)
#결과 : (array([2,3,4,5,6]), array([0,2,6,8,10]))
-np.unique() 메소드는 매개변수로 전달받는 배열 내의 원소 중 unique한 원소만을 return
-해당 메소드 내부의 return_index 매개변수 값은 True로 설정하게 되면 unique한 원소와 함께 해당 원소가 위치하는 첫 번째 index를 함께 반환하게 된다.
-위의 코드는 1차원 array에 대해 np.unique()를 적용한 코드이다
tmp_2d = np.array([[1,1,3,4],[1,1,3,4],[1,1,5,6],[1,1,7,8]])
u_tmp_2d = np.unique(tmp_2d)
#결과 : [1 3 4 5 6 7 8]
u_row_tmp_2d = np.unique(tmp_2d, axis=0)
#결과 : [[1 1 3 4][1 1 5 6][1 1 7 8]]
u_col_tmp_2d = np.unique(tmp_2d, axis=1)
# 결과 : [[1 3 4][1 3 4][1 5 6][1 7 8]]
-2차원 array에 대해서는 매개변수로 axis 값을 0또는 1로 받는다.
-이를 사용하면 2차원 array에서 unique한 행이나 열을 반환하는 것을 알 수 있다.
4. 배열 거꾸로 만들기 (<-> transpose)
test = np.array([1,2,3,4,5])
r_test=np.flip(test)
#결과 : [5 4 3 2 1]
-numpy에서 제공하는 함수인 np.flip()을 활용하면 배열을 역순으로 정리할 수 있다.
-np.flip()은 2차원 배열에서도 적용이 가능하다
arr_2d = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],[11, 12, 13, 14, 15]])
arr_2d_row = np.flip(arr_2d, axis = 0)
# 결과: [[11 12 13 14 15][ 6 7 8 9 10] [ 1 2 3 4 5]]
arr_2d_col = np.flip(arr_2d, axis = 1)
# 결과: [[ 5 4 3 2 1][10 9 8 7 6][15 14 13 12 11]]
-매개변수 axis의 값을 통해 flip의 형태를 조절할 수 있다.
-axis의 값이 0인 경우 행의 순서를 뒤집는 연산을 수행한다
-axis의 값이 1인 경우 행의 순서는 그대로 있고, 행 내에서 열의 순서만 역순으로 조정한다.
arr_2d = np.array([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10],[11, 12, 13, 14, 15]])
arr_2d[1] = np.flip(arr_2d[1])
#결과 : [[ 1 2 3 4 5][10 9 8 7 6][11 12 13 14 15]]
arr_2d_2 = np.array([[1,11,111,1111],[2,22,222,2222],[3,33,333,3333]])
arr_2d_2[:,1:3] = np.flip(arr_2d_2[:,1:3], axis=1)
#결과 : [[ 1 111 11 1111][ 2 222 22 2222][ 3 333 33 3333]]
-2차원 배열에서 슬라이싱과 구간 지정을 통해 특정 구간만을 역순으로 정리하는 것도 가능하다.