728x90
반응형
NumPy 배열
- 차원(Dimension)을 축(axis)이라고 표현한다.
배열 속성값
- shape : 배열의 각 축(axis)의 크기
- ndim : 축의 개수(Dimension)
- dtype : 각 요소(Element)의 타입
- itemsize : 각 요소(Element)의 타입의 bytes 크기
- size : 전체 요소(Element)의 개수
배열 생성
np.array 이용 : 튜플이나 List 입력
print(np.array([2,3,4])) [2 3 4]
np.zeros(shape) : 0 으로 구성된 N 차원 배열 생성
print(np.zeros((3,4))) [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
np.ones(shape) : 1로 구성된 N차원 배열 생성
print(np.ones((2,3,4))) [[[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]] [[1. 1. 1. 1.] [1. 1. 1. 1.] [1. 1. 1. 1.]]]
np.empty(shape) : 초기화 되지 않은 N차원 배열 생성
print(np.empty((2,3))) [[2.45757343e-316 0.00000000e+000 0.00000000e+000] [0.00000000e+000 0.00000000e+000 0.00000000e+000]]
np.arange(start, stop, step): N 만큼 차이나는 숫자 생성, stop 은 포함되지 않는다
print(np.arange(0, 10, 2)) [0 2 4 6 8]
np.linspace(start, stop, num): N 등분한 숫자 생성, 처음, stop 포함됨.
print(np.linspace(0,99, 100)) [ 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99.]
기본 연산
"*" : 각각의 원소끼리 곱셈
@ : 행렬 곱셈
A = np.array( [[1,1], [0,1]] ) B = np.array( [[2,0], [3,4]] ) print(A) print(B) --------------- [[1 1] [0 1]] [[2 0] [3 4]] print(A*B) print(A@B) --------------- [[2 0] [0 4]] [[5 4] [3 4]]
집계함수
sum
min
max
argmax : 최대값 인덱스
cumsum : 누적합
axis 값을 매개변수로 입력하면 축을 기준으로 연산이 가능하다.
axis=0 (열기준)
axis=1 (행기준)
b = np.arange(12).reshape(3, 4) [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] print(b.sum(axis=0)) [12 15 18 21] print(b.sum(axis=1)) [ 6 22 38]
인덱싱, 슬라이싱
배열 자체를 가지고 인덱싱이 가능 하다. 배열의 인덱스 값으로 배열 자체가 들어갈 수도 있다.
a = np.arange(12).reshape(3,4) print(a) [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] b=a>4 print(b) [[False False False False] [False True True True] [ True True True True]] print(a[b]) a[b].shape [ 5 6 7 8 9 10 11] (7,) a[b]=0 print(a) [[0 1 2 3] [4 0 0 0] [0 0 0 0]]
크기 변경
- revel : 1차원으로 변경
- reshape : 지정한 차원으로 변경
- T : 전치 변환
a = np.arange(12).reshape(3,4) print(a) print(a.shape) [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] (3, 4) print(a.ravel()) # a.reshape(-1) [ 0 1 2 3 4 5 6 7 8 9 10 11] print(a.T) [[ 0 4 8] [ 1 5 9] [ 2 6 10] [ 3 7 11]]
데이터 합치기
vstack (열기준), hstack(행기준)
a = np.array([1, 2, 3, 4]).reshape(2, 2) print(a) [[1 2] [3 4]] b = np.array([5, 6, 7, 8]).reshape(2, 2) print(b) [[5 6] [7 8]] print(np.vstack((a,b))) [[1 2] [3 4] [5 6] [7 8]] print(np.hstack((a,b))) [[1 2 5 6] [3 4 7 8]]
hsplit
숫자 1개일경우 숫자기준으로 X개 등분
리스트 넣을 경우 인덱스 기준 분할 (start, end) 일경우 end 는 포함되지 않음
[[ 0 1 2 3 4 5] [ 6 7 8 9 10 11]] np.hsplit(a, 3) [array([[0,1],[6,7]]), array([[2,3],[8,9]]), array([[4,5],[10,11]])] np.hsplit(a, (3,4)) [array([[0, 1, 2],[6, 7, 8]]), array([[3],[9]]), array([[ 4, 5],[10, 11]])]
728x90
반응형
'Development > Python' 카테고리의 다른 글
colab 에서 kaggle 설정 (0) | 2023.06.07 |
---|---|
Pandas 사용 (0) | 2023.05.23 |
Conda python 버전 업데이트 (0) | 2023.04.15 |
Mac 에서 Conda 설치 (0) | 2023.04.05 |
파이썬 가상 환경 실행 및 VS Code 설정 (0) | 2023.03.27 |