티스토리 뷰
728x90
반응형
오늘은 python의 numpy 라이브러리의 array함수를 사용하는 연습을 해보자.
문제는 numpy.array를 사용하여 구구단의 각 합을 구해보자.
목차
- list와 ndarray의 차이
- 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
반응형
'프로그래밍 정보 > python' 카테고리의 다른 글
| [Python] (기초) numpy 라이브러리를 사용하여 간단한 그래프 그리기 (0) | 2023.06.22 |
|---|
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- variable
- 모닝독서
- NestJS
- JavaScript
- 초아
- Kernel
- JS
- 포인터
- js syntax
- Til
- Linux
- 재미있는
- tailwind
- 미라클모닝
- opencv
- CSS
- QT
- 스타벅스
- Python
- raspberrypi
- 오늘의 공부
- SQL
- tailwindcss
- 20.03.11.(목)
- var
- yocto
- JSON
- 라즈베리파이
- 자바스크립트
- C
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함
