티스토리 뷰

728x90
반응형

오늘은 python의 numpy 라이브러리의 array함수를 사용하는 연습을 해보자.

 

문제는 numpy.array를 사용하여 구구단의 각 합을 구해보자.

 

목차

  1. list와 ndarray의 차이
  2. numpy.array를 사용하여 구구단의 각 단의 합 구하기(+리팩터링)

 

list와 ndarray의 차이

  • list

 

import numpy as np

a = [1,2,3]
b = [4,5,6]
print(a, type(a)) # [1,2,3] <class 'list'>
print(b, type(b)) # [4,5,6] <class 'list'>

print(a+b, type(a+b)) # [1, 2, 3, 4, 5, 6] <class 'list'>

list는 + 연산자 사용 시 append가 된다.

 

  • ndarray
a = np.array([1,2,3])
b = np.array([4,5,6])
print(a, type(a)) # [1 2 3] <class 'numpy.ndarray'>
print(b, type(b)) # [4 5 6] <class 'numpy.ndarray'>

print(a+b, type(a+b)) # [5 7 9] <class 'numpy.ndarray'>

numpy.ndarray는 벡터이다.

그래서 ndarray는 + 연산자 사용 시 각 위치에 +(벡터 내적)를 해준다.

 

 

numpy.array를 사용하여 구구단의 각 단의 합 구하기

dan = np.array(
    [
        [2,2,2,2,2,2,2,2,2],
        [3,3,3,3,3,3,3,3,3],
        [4,4,4,4,4,4,4,4,4],
        [5,5,5,5,5,5,5,5,5],
        [6,6,6,6,6,6,6,6,6],
        [7,7,7,7,7,7,7,7,7],
        [8,8,8,8,8,8,8,8,8],
        [9,9,9,9,9,9,9,9,9],
    ]
)
step = np.array(
    [
        [1],
        [2],
        [3],
        [4],
        [5],
        [6],
        [7],
        [8],
        [9]        
    ]
)
result = dan.dot(step)
print('result=', result, type(result), 'shape=', result.shape)
    '''
    result= [[ 90]
     [135]
     [180]
     [225]
     [270]
     [315]
     [360]
     [405]] <class 'numpy.ndarray'> shape= (8, 1)
     '''

for x in range(2, 10, 1):
    print(x,'단의 총합 =', result[x-2])
    '''
    2 단의 총합 = [90]
    3 단의 총합 = [135]
    4 단의 총합 = [180]
    5 단의 총합 = [225]
    6 단의 총합 = [270]
    7 단의 총합 = [315]
    8 단의 총합 = [360]
    9 단의 총합 = [405]
    '''

 위 코드는 벡터의 내적으로 계산하는 코드이다. 내가 문제를 풀면서 처음에 위와 같이 풀었는데 나중에 아래와 같이 리팩터링을 하였다.

 

 

(리팩터링) numpy.array를 사용하여 구구단의 각 단의 합 구하기

D = np.ones((8, 9))
for k in range(2, 10, 1):
    D[idx] = k
    idx += 1
S= np.arange(1, 10)
print("D =", D)
    '''
    D = [[2. 2. 2. 2. 2. 2. 2. 2. 2.]
     [3. 3. 3. 3. 3. 3. 3. 3. 3.]
     [4. 4. 4. 4. 4. 4. 4. 4. 4.]
     [5. 5. 5. 5. 5. 5. 5. 5. 5.]
     [6. 6. 6. 6. 6. 6. 6. 6. 6.]
     [7. 7. 7. 7. 7. 7. 7. 7. 7.]
     [8. 8. 8. 8. 8. 8. 8. 8. 8.]
     [9. 9. 9. 9. 9. 9. 9. 9. 9.]]
    '''
    
print("S =", S)
    '''
    S = [1 2 3 4 5 6 7 8 9]
    '''

G = D * S
print("D*S=", G)
    '''
    D*S= [[ 2.  4.  6.  8. 10. 12. 14. 16. 18.]
     [ 3.  6.  9. 12. 15. 18. 21. 24. 27.]
     [ 4.  8. 12. 16. 20. 24. 28. 32. 36.]
     [ 5. 10. 15. 20. 25. 30. 35. 40. 45.]
     [ 6. 12. 18. 24. 30. 36. 42. 48. 54.]
     [ 7. 14. 21. 28. 35. 42. 49. 56. 63.]
     [ 8. 16. 24. 32. 40. 48. 56. 64. 72.]
     [ 9. 18. 27. 36. 45. 54. 63. 72. 81.]]
     '''
     
Z = D.dot(S)
print("Z is = ", Z ,Z.shape)
    '''
    Z is =  [ 90. 135. 180. 225. 270. 315. 360. 405.] (8,)
    '''


이렇게 파이썬의 벡터를 어떻게 사용하는지 기본적인 방법을 살펴보았다.

 

728x90
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
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
글 보관함