- 선언방식
import numpy as np
A = np.array([[1, 2], [3, 4]])
이와 같이 numpy를 np로 가져와서 이차원배열을 선언할 수 있다.
Numpy는 일, 이차원배열 뿐만 아니라 다차원배열도 사용할 수 있다.
- 배열의 연산
import numpy as np
A = np.array([[1, 2], [3, 4]])
B = np.array([[10, 20], [30, 40]])
print(A+B)
print(A*B)
[[11 22]
[33 44]]
[[ 10 40]
[ 90 160]]
[33 44]]
[[ 10 40]
[ 90 160]]
위처럼 배열간의 연산도 가능하다.
주의할 점은 배열간의 원소의 개수가 같아야 한다는 점이다.
A와B는 둘다(2,2)의 형상을 가지고 있기 때문에 각각 대응하는 원소들간의 연산이 가능하다.
여기서 원소는 배열의 요소들 위의 배열에서는 1,2,10,20 등의 숫자를 의미한다.
- 브로드캐스트
아래와 같이 형상이 다른 경우에도 연산은 가능하다.
A = np.array([[1, 2], [3, 4]])
B = np.array([10, 20])
print(A+B)
print(A*B)
[[11 22]
[13 24]]
[[10 40]
[30 80]]
[13 24]]
[[10 40]
[30 80]]
이러한 결과값이 나오는 이유는 브로드캐스트라는 기능 때문인데, 이 기능은 배열의 형상을 조정하여 계산이 가능하게 만들어준다.
위에 코드에서 B배열은
B = np.array([[10, 20],[10, 20]])
이와 같은 배열로 변형되기 때문에 위에서 본 결과값이 도출될 수 있다.
- 원소 접근
A = np.array([[1, 2], [3, 4]])
locateInA = A[0,1]
print(locateInA)
2
위와 같은 방법으로 원소에 접근할 수 있다.
배열에 대한 접근은 다른 언어와 큰 차이가 없다고 생각한다.
위의 코드는 A배열의 0번째중 1번째 원소를 가져와 2가 출력된다.
B = np.array([[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]])
for row in B:
print(row)
[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]
[ 6 7 8 9 10]
[11 12 13 14 15]
[16 17 18 19 20]
[21 22 23 24 25]
위와 같이 반복문을 사용하여 배열의 값을 가져오는 것도 가능하다.
B = B.flatten()
print(B)
[ 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]
25]
위와 같이 faltten 함수를 이용하면 배열을 평탄화 시켜준다.
print(B[np.array([2,4]), np.array([0,2])])
[11 23]
이러한 기법은 배열 안에 원하는 곳의 원소를 가져올 수 있다.
위의 코드는 2번째 배열 0번 원소와 4번째 배열 2번 원소를 가져오는 코드이다.
'AI > Python' 카테고리의 다른 글
Python-그래프 (0) | 2023.12.02 |
---|