728x90
arange & linspace
- np.arange: N만큼 차이 나는 숫자를 생성해 준다.
- np.linspace: N 등분한 숫자를 생성해 준다.
np.arange([start], stop, [step]..)
- []는 생략 가능하다.
- 끝 값은 포함하지 않는다.
np.linspace(start, stop, num=50..)
- 처음 값과 끝 값을 포함한다,
- 몇 개로 만들지 매개변수로 넘겨준다.
예제 코드
# 10이상 30미만 까지 5씩 차이나게 생성
print(np.arange(10,30,5))
>>> [10 15 20 25]
# 0이상 2미만 까지 0.3씩 차이나게 생성
print(np.arange(0,2,0.3))
>>> [0. 0.3 0.6 0.9 1.2 1.5 1.8]
# 0~99까지 100등분
x = np.linspace(0, 99, 100)
print(x)
>>> [ 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.]
arange 함수는 끝 값을 포함하지 않기 때문에 가독성을 위해 끝값 1.25를 1+0.25로 표현해 봤다. 0부터 1.25 미만까지(끝 값 포함 안 하니까 1까지 출력) 0.25씩 차이 나게 생성했다.
print(np.arange(0, 1 + 0.25, 0.25))
>>> [0. 0.25 0.5 0.75 1. ]
위와 동일한 결과를 linspace 함수를 이용해서 작성해 보자. 0부터 1까지(끝 값 포함) 5등분을 하면 된다.
print(np.linspace(0, 1, 5))
>>> [0. 0.25 0.5 0.75 1. ]
reshape()
c = np.arange(24).reshape(2,3,4)
print(c)
>>> [[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
출력 모양은 (3,4) 크기의 2차원 배열이 2개 출력되는 형식으로 보인다.
reshape(2,3,4)
(2,3,4)를 읽는 방법은 다음과 같다.
- 3,4: (3,4) 크기의 2차원 배열이
- 2: 두 번 출력된다
다른 예시로 reshape(6, 2, 3)이 출력된 모습을 보면 (2,3) 이차원 배여링 6개 출력되는 형식으로 볼 수 있다.
c = np.arange(36).reshape(6,2,3)
>>> [[[ 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]]]
element wise
Element wise 연산은 numpy 배열의 각 요소들이 같은 위치에 있는 다른 배열의 요소와 개별적으로 연산되는 것을 의미한다. 이를 통해 배열 간의 덧셈, 뺄셈, 곱셈, 나눗셈 등의 연산을 쉽게 수행할 수 있다. 예를 들어, 두 배열의 같은 인덱스에 있는 요소들끼리 더하거나 빼는 연산을 할 수 있다.
# a와 b 배열 생성하여 출력
a = np.array([20,30,40,50])
b = np.arange(4)
print(a)
print(b)
>>> [20 30 40 50]
>>> [0 1 2 3]
# a에서 b에 각각의 원소를 - 연산
c = a-b
print(c)
>>> [20 29 38 47]
# b 각각의 원소에 제곱 연산
print(b**2)
>>> [0 1 4 9]
# A와 B 배열 생성하여 출력
A = np.array( [[1,1],
[0,1]] )
B = np.array( [[2,0],
[3,4]] )
>>> [[1 1]
[0 1]]
[[2 0]
[3 4]]
# A * B
# 각각의 원소끼리 곱셈
print(A*B)
>>> [[2 0]
[0 4]]
# A @ B
# 행렬 곱셈 사용
print(A@B)
>>> [[5 4]
[3 4]]
행렬 곱셈
행렬 A가 m * n
크기이고, 행렬 B가 n * p
크기일 때, 행렬 곱셈 C = A @ B 는 m * p
크기의 행렬 C가 된다. 이때 C의 각 요소 c_{ij} 는 A의 i번째 행과 B의 j번째 열의 요소들을 곱한 뒤 더한 값이다.
행렬 곱셈 과정
'프로그래밍 언어 > Python' 카테고리의 다른 글
[numpy] 인덱싱과 슬라이싱, vstack, hstack, hsplit (0) | 2024.08.04 |
---|---|
[numpy] 자동 형 변환, 기본 연산 (0) | 2024.08.04 |
파일 압축 - zlib, gzip, zipfile, tarfile (0) | 2024.08.04 |
파일 찾기, 복사, 이동 - glob, fnmatch, shutil (0) | 2024.08.04 |
파일 읽기, 저장 - Pickle 모듈 (0) | 2024.08.04 |