2026년 4월 18일 토요일

내 뉴럴 네트워크 만들기 (준비중)

내 뉴럴 네트워크

Part2: 최소한의 파이썬

1. 필요한 모듈 설치

sudo apt install python3-pip
sudo apt install python3-numpy
sudo apt install python3-scipy
sudo apt install python3-matplotlib
sudo apt install python3-ipython
sudo apt install python3-ipykernel

2. 파이썬 실행

$ python3

Python 3.12.3 (main, Mar  3 2026, 12:15:18) [GCC 13.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

>>>

3. 파이썬 프롬프트에서 리눅스 명령 실행

>>> import os
>>> os.system("ls -l")

total 24
-rw-r--r-- 1 mychip mychip 135 Apr  7 11:37 arrays.py
-rw-r--r-- 1 mychip mychip 594 Apr  7 12:09 class.py
-rw-r--r-- 1 mychip mychip  51 Apr  7 11:20 for_loop.py
-rw-r--r-- 1 mychip mychip  85 Apr  7 11:22 for_sqr.py
-rw-r--r-- 1 mychip mychip 259 Apr  7 11:44 plotting_arrays.py
-rw-r--r-- 1 mychip mychip 193 Apr  7 12:13 Skeleton_Code.py

4. 파이썬 프롬프트에서 파일 읽기 및 실행

>>> print(open('./arrays.py').read())
import numpy
a = numpy.zeros([3,2])
print(a)
a[0,0] = 1
a[0,1] = 2
a[1,0] = 9
a[2,1] =12
print(a)
print(a[0,1])
v = a[1,0]
print(v)

>>> exec(open('./arrays.py').read())
[[0. 0.]
 [0. 0.]
 [0. 0.]]
[[ 1.  2.]
 [ 9.  0.]
 [ 0. 12.]]
2.0
9.0

모듈로 읽기,

>>> import arrays

---------------------

파이썬 환경

Jupyter Notebook, MS Code 등이 편리한 파이썬 실행 환경을 제공한다. 파이썬 명령 줄 환경도 괜찮다. 파이썬 명령 줄 프롬프트는 '>>>' 다.

--------------------

파이썬 인터프리터 환경에서 문장 실행,

>>> 2+3
5

>>> print("Hello World!")
Hello World!

>>> x=10
>>> print(x)
10

>>> print(x+5)
15

>>> y=x+7
>>> print(y)
17

>>> print(z)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'z' is not defined

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> 

for 반복문,

>>> for n in range(10):
...  print(n)
...  pass
...

0
1
2
3
4
5
6
7
8
9

파이썬의 문장,

- 파이썬은 문장의 마침표가 따로 없이 '엔터'로 끝난다.
- 제어문의 구역 시작은 콜론(:) 이다.
- 제어문이 영향을 미치는 구역의 표시는 들여쓰기다. 문장 앞에 공백문자(스페이스 또는 탭)넣는다.
- pass 는 아무런 실행내용이 없는 '자리채움'일 뿐이다. 제어 영역의 마침을 표시한다.
- 샵(#) 문자 뒤는 주석(comment)이다.

파일 for_loop.py 에 작성한 for 반목문을 읽어서 실행,

>> print(open('./for_loop.py').read())
# For 반복문
for n in range(10):
    print(n)
    pass
print("done")

>>> exec(open('./for_loop.py').read())
0
1
2
3
4
5
6
7
8
9
done

함수,

>>> import os
>>> os.system("cat func_avg.py")
# Function that takes 2 numbers as input
# and outputs their average
def avg(x,y):
    print("first input is: ", x)
    print("second input is: ", y)
    a = (x+y)/2.0
    print("average is ", a)
    return a

0

>>> import func_avg
>>> func_avg.avg(4,7)
first input is:  4
second input is:  7
average is  5.5

5.5

>>>

numpy는 통계, 수치해석 등의 응용에서 다차원 배열 객체를 수월하게 다룰 수 있도록 해주는 파이썬 모듈(라이브러리)이다. 배열 값을 0으로 채운 5행 6열 배열 객체를 생성하는 예는 다음과 같다.

>>> import numpy
>>> a = numpy.zeros([5,6])
>>> print(a)
[[0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]]

대괄호([])는 배열에 접근할때 사용된다.

>>> a[0,0] = 1
>>> a[3,4] = 2
>>> a[5,5] = 3

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: index 5 is out of bounds for axis 0 with size 5

>>> a[4,5] = 3
>>> print(a)
[[1. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0.]
 [0. 0. 0. 0. 2. 0.]
 [0. 0. 0. 0. 0. 3.]]

파이썬 모듈 matplotlib는 행렬 데이터의 시각화에 유용하다. 5행 6열 2차원 배열 객체를 만들어 임의의 값을 저장한 후 값에 해당하는 가장 가까운 색으로 그림을 그리는 파이썬 스크립트 plotting_arrays.py는 다음과 같다.

# Plotting Array Example
# Filename: plotting_arrays.py

import numpy

arr = numpy.zeros([5,6])

(nRows,nCols)=arr.shape
print('Array has ',nRows, 'x', nCols)

for i in range(nRows):
  for j in range(nCols):
    arr[i][j] = int(numpy.random.rand()*100)
    pass
  pass

print(arr)

import matplotlib.pyplot

matplotlib.pyplot.imshow(arr, interpolation="nearest")

matplotlib.pyplot.show()

위의 파이썬을 실행 시켜보자.

>>> import plotting_arrays
Array has  5 x 6
[[81. 44. 98. 82. 13. 77.]
 [63. 84. 42. 48. 50. 54.]
 [31. 86. 60. 32. 91. 58.]
 [49. 81.  3. 53. 22. 67.]
 [34. 97. 13. 45. 50. 26.]]

객체 크래스,





댓글 없음:

댓글 쓰기