
import numpy 보다는 import numpy as np로 불러옵니다.import numpy as np
numpy.ndarray 타입을 가진 배열의 모양을 얻어오는 방법을 배워보겠습니다.A = np.array([[1, 1, 1], [2, 3 ,4]])
print(A.shape)
(2, 3)
- 위 코드에서 배열 A을 표로 나타내면 다음과 같습니다.
- 배열 A는 2 × 3 모양을 가진 2차원 배열이며,
A.shape을 통해tuple타입으로 얻어 낼 수 있습니다.
ones()은 1로 채워진 배열을 반환하며 shape 인자를 통해 모양을 지정할 수 있습니다.zeros()은 0으로 채워진 배열을 반환하며 shape인자를 통해 모양을 지정할 수 있습니다.import numpy as np
np.random.seed(42)
# np.ones()을 사용하여 2 x 1 x 3 모양을 가진 배열을 만들어줍니다.
A =
np.ones(shape = (2,1,3))
# np.zeros()을 사용하여 3 x 4 x 2 모양을 가진 배열을 만들어줍니다.
B =
np.zeros(shape = (3,4,2))
random의 함수를 사용하여 지정한 사이즈에 맞게 무작위 값으로 요소들을 채워 배열을 만들 수 있습니다.
randn()에 모양을 인자로 주어 배열을 생성합니다. 이때, randn()에 들어간 인자의 순서대로 차원의 크기가 정해집니다.
normal()은 정규 분포에 맞게 생성하는 함수로서 모양을 size 인자를 통해 전달하여 배열을 생성합니다. 이때 평균(mean)과 표준편차(std)값을 각각 loc, scale 인자를 통해 지정할 수 있습니다.
randint(start, end, size)는 임의의 정수들로 채워진 배열을 만들어줍니다. 이때 정수 범위는 start 이상 end 미만으로, size에 모양을 인자로 전달합니다.
>>> import numpy as np
# 3 x 2의 모양을 가진 배열을 가우시안 분포에 따라 랜덤하게 만들어줍니다.
>>> randn_arr = np.random.randn(3,2)
>>>print(randn_arr)
[[0.13877501 -1.02584702]
[0.88228595 -0.08836542]
[-1.21212413 0.54791626]]
# 3 x 2의 모양을 가진 배열을 랜덤하게 만들어줍니다.
>>> rand_arr = np.random.normal(size=(3, 2))
>>> print(rand_arr)
[[-1.25582381 -0.03418971]
[-0.6234516 0.34737055]
[ 0.79151938 1.63548097]]
# 3 x 2의 모양을 가진 배열을 정규 분포에 따라 랜덤하게 만들어줍니다.
>>> rand_normal_arr = np.random.normal(loc = 3, scale = 0.25, size=(3, 2))
>>> print(rand_normal_arr)
[[2.87919609 2.95184 ]
[2.97402801 3.44054116]
[2.77450037 3.24502051]]
# 3 x 2의 모양을 가지고, 1부터 9까지 임의의 정수로만 이루어진 배열을 만들어줍니다.
>>> rand_int_arr = np.random.randint(1, 10, size=(3, 2))
>>> print(rand_normal_arr)
[2 6]
[3 3]
[9 2]]
numpy.ndarray 타입의 배열에 존재하는 요소들에 대해서 접근해봅시다.Python의 list와 동일하게 1차원 배열에 대해서 인덱스를 가지고 요소에 접근할 수 있습니다.
>>> import numpy as np
>>> arr = [1, 3, 10, 55, 31, 12, 15]
>>> A = np.array(arr)
>>> print(A[3])
55
2차원 배열의 경우 Python의 list와 동일하게 인덱싱이 가능하지만 보편적으로 []안에 쉼표를 기준으로 구분하여 인덱싱하는 것을 권장합니다.
>>> import numpy as np
>>> arr = [[1, 2, 4], [12, 15, 17]]
>>> print(arr[1][2])
17
>>> np_arr = np.array(arr)
>>> print(np_arr[1][2])
17
>>> print(np_arr[1, 2])
17
numpy.ndarray 타입의 배열에 존재하는 요소들을 변경해보도록 합시다.바꾸고자 하는 요소의 위치(인덱스)를 안다면 직접 접근하여 값을 변경할 수 있습니다.
>>> import numpy as np
>>> arr = [1, 3, 10, 55, 31, 12, 15]
>>> A = np.array(arr)
>>> A[3] = 22
>>> print(A)
[ 1 3 10 22 31 12 15]
>>> import numpy as np
>>> arr = [[1, 2, 4], [12, 15, 17]]
>>> np_arr = np.array(arr)
>>> np_arr[1, 2] = 100
>>> print(np_arr)
[[ 1 2 4]
[ 12 15 100]]
List 방식li_A와 li_B를 생성한다.for문을 사용하여 li_A와 li_B 사이의 요소별 덧셈 연산을 한다.>>> li_A = [1, 2, 3, 4, 5]
>>> li_B = [6, 7, 8, 9, 10]
>>> result = [a + b for a, b in zip(li_A, li_B)]
>>> print(result)
[7, 9, 11, 13, 15]Numpy 방식numpy.ndarray 변수를 생성한다.for문이 아닌 + 연산자만 사용하여 arr_A와 arr_B 사이의 요소별 덧셈 연산을 한다.Numpy를 이용하면 높은 차원의 배열일지라도 같은 모양을 가졌다면, 여러 개의 for문이 아닌 단 한 줄의 코드만으로 연산 코드를 작성할 수 있습니다.
>>> import numpy as np
>>> arr_A = np.array([1, 2, 3, 4, 5])
>>> arr_B = np.array([6, 7, 8, 9, 10])
>>> result = arr_A + arr_B
>>> print(result)
[ 7 9 11 13 15]
곱셈 연산
>>> import numpy as np
>>> arr_A = np.array([1, 2, 3, 4, 5])
>>> arr_B = np.array([6, 7, 8, 9, 10])
>>> result = arr_A * arr_B
>>> print(result)
[ 6 14 24 36 50]
뺄셈 연산
>>> import numpy as np
>>> arr_A = np.array([6, 4, 2, 5, 9])
>>> arr_B = np.array([3, 1, 3, 4, 10])
>>> result = arr_A - arr_B
>>> print(result)
[ 3 3 -1 1 -1]
나눗셈 연산
>>> import numpy as np
>>> arr_A = np.array([2, 6, 6])
>>> arr_B = np.array([4, 3, 8])
>>> result = arr_A / arr_B
>>> print(result)
[0.5 2. 0.75]
나머지 연산
>>> import numpy as np
>>> arr_A = np.array([5, 3, 6])
>>> arr_B = np.array([2, 2, 4])
>>> result = arr_A % arr_B
>>> print(result)
[1 1 2]
Numpy에서는 +, *, -, /, % 연산자를 사용하여 for문 없이 간단한 코드로 배열 간의 요소별 연산을 할 수 있습니다.
