imports
아래코드를 이용하여 numpy 와 matplotlib을 import하라.
1. 코드구현 I
주의: 문제에 조건이 있는 경우 조건을 준수할 것
(1) a의 type을 bool로 바꾸어라.
(2)-(6)
아래의 문자열을 고려하자.
test_arr = 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAklOUpkDHrfHY17SbrmTIpNLTGK9Tjom/BWDSUGPl+nafzlHDTYW7hdI4yZ5ew18JH4JW9jbhUFrviQzM7xlELEVf4h9lFX5QVkbPppSwg0cda3Pbv7kOdJ/MTyBlWXFCR+HAo3FXRitBqxiX1nKhXpHAZsMciLq8V6RjsNAQwdsdMFvSlVK/7XAt3FaoJoAsncM1Q9x5+3V0Ww68/eIFmb1zuUFljQJKprrX88XypNDvjYNby6vw/Pb0rwert/EnmZ+AW4OZPnTPI89ZPmVMLuayrD2cE86Z/il8b+gw3r3+1nKatmIkjn2so1d01QraTlMqVSsbxNrRFi9wrf+M7Q== schacon@mylaptop.local'(2) 위 문자열에서 짝수번째 원소를 출력하는 코드를 작성하라.
(3) 위 문자열에서 마지막 10개의 원소를 출력하는 코드를 작성하라.
(4) 위 문자열을 뒤집은 문자열을 구하는 코드를 작성하라. 즉 아래를 출력하는 코드를 작성하라.
'lacol.potpalym@nocahcs ==Q7M+frw9iFRrNxbsSVqMlTarQ10d1os2njkImtaKn1+3r3wg+b8li/Z68Ec2DryauLMVmPZ98IPTnPZO4WA+ZmnE/trewr0bP/wv6ybNYjvDNpyX88XrrpKJQjlFUuz1bmFIe/86wW0V3+5x9Q1McnsAoJoaF3tAX7/KVlSvFMdsdwQANsjR6V8qLicMsZAHpXhKn1XixqBtiRXF3oAH+RCFXWlByTM/JdOk7vbP3adc0gwSppPbkVQ5XFl9h4fVELElx7MzQivrFUhbj9WJ4HJ81we5Zy4Idh7WYTDHlzfan+lPGUSDWB/mojT9KGTLNpITmrbS71YHfrHDkpUOlkAEQAAAwIBAAAAE2cy1CazN3BAAAA asr-hss'
(5) 위 문자열에서 대문자의 수를 count하라.
hint .isupper() 메소드를 이용할 것.
(6) 위 문자열에서 사용된 문자 및 특수문자의 종류는 모두 몇가지 인가?
note: 출제의도: set 자료형의 이해
note1: 문자열 ‘AAB @ab’ 에서 사용된 문자는 ‘A’, ‘B’, ’ ‘,’@‘, ’a’, ‘b’ 이므로 모두 6종류의 문자 및 특수문자가 사용되었다.
note2: ’ ‘,’+‘,’-‘,’.’, ‘/’, ‘=’, ‘@’, ‘1’, ‘a’, ‘A’ 등을 모두 다른 문자로 취급한다.
(7) 리스트컴프리헨션을 이용하여 아래와 같은 리스트를 생성하라
['a',
'aa',
'aaa',
'aaaa',
'aaaaa',
'aaaaaa',
'aaaaaaa',
'aaaaaaaa',
'aaaaaaaaa',
'aaaaaaaaaa'] <- a가 10개있음
(8) 길이가 1인 튜플을 만들어 자신의 학번을 저장하라. 길이가 1인 튜플을 만들어 자신의 영문이름을 저장하라. 두 튜플을 + 연산자로 합쳐아래와 같은 출력결과를 얻어라.
(202143052,'guebin')
(9) 아래와 같은 list가 있다고 하자.
test_lst와 리스트컴프리헨션을 이용하여 아래를 출력하는 코드를 구현하라.
['g', 'uuuuu', 'ee', 'bbbbbbbb', 'ii', 'nnnnnnnnn']
(10) 다음은 학생들의 출석,레포트,중간고사,기말고사 점수를 입력으로 하여 학점을 계산하는 함수이다.
아래는 학생들의 학번, 출석점수, 레포트, 중간고사, 기말고사 점수가 입력된 리스트이다.
data = [['202212345', [100,95,25,90]],
['202212346', [60,90,95,95]],
['202212347', [50,90,45,35]],
['202212348', [90,90,50,75]],
['202212349', [100,95,85,85]],
['202212350', [90,90,100,95]],
['202212351', [100,95,100,95]],
['202212352', [95,85,80,60]],
['202212353', [100,90,60,55]],
['202212354', [100,85,70,95]],
['202212355', [100,95,40,100]]]아래의 ???를 적절하게 완성하여 학생들의 학점을 계산하는 코드를 완성하라.
(11) 길이가 0인 문자열을 선언하라.
(12)-(15)
(12) dir(plt)와 dir(np)를 각각 실행하라. 실행결과를 각각 a,b로 저장하라. a,b의 type은 무엇인가?
(13) a의 원소와 b의 원소의 수를 각각 구하라.
(14) a와 b의 공통원소의 수를 구하라.
(15) a와 b의 원소를 합친 리스트를 만들어라. (공통원소는 중복하여 합치지 않는다)
(16)-(18) 아래와 같은 dictionary가 있다.
test_dic = {'202212345': {'att':100,'rep':95,'mid':25,'fin':90},
'202212346': {'att':60,'rep':90,'mid':95,'fin':95},
'202212347': {'att':50,'rep':90,'mid':45,'fin':35},
'202212348': {'att':90,'rep':90,'mid':50,'fin':75},
'202212349': {'att':100,'rep':95,'mid':85,'fin':85},
'202212350': {'att':90,'rep':90,'mid':100,'fin':95},
'202212351': {'att':100,'rep':95,'mid':100,'fin':95},
'202212352': {'att':95,'rep':85,'mid':80,'fin':60},
'202212353': {'att':100,'rep':90,'mid':60,'fin':55},
'202212354': {'att':100,'rep':85,'mid':70,'fin':95},
'202212355': {'att':100,'rep':95,'mid':40,'fin':100}}여기에서 202212345등은 학번을, att는 출석점수, rep는 레포트점수, mid는 중간고사점수, fin은 기말고사 점수를 의미한다.
(16) get 메소드를 이용하여 202212353에 해당하는 학생의 성적을 아래와 같이 리턴하라.
{'att': 100, 'rep': 90, 'mid': 60, 'fin': 55}
(17) 202212354의 레포트 점수를 리턴하라.
(18) 학생들의 학번을 리턴하는 코드를 작성하라.
(19) shape이 ()인 numpy이 array를 만들어라. (즉 차원이 0인 np.array를 만들어라)
(20) shape이 (2,2)인 단위행렬을 만들어라.
(21) a의 모든 원소에 1을 더하는 코드를 작성하라.
(22) 아래와 같은 수열을 생성하라.
1,3,6,10,15,21,28,36,45, ... , 378, 406, 435
hint: 이 수열에서 \(a_n-a_{n-1}=n, ~n\geq 2\) 이다. 즉 3-1=2, 6-3=3, 10-6=4, …
(23) 아래와 같은 수열을 생생성하라.
0,1,2,3,4,5,...,99
위의 수열에서 1,4,7,10,13,… 번째의 원소를 뽑아라. (첫번째 원소는 0이다)
(24) numpy를 이용하여 아래의 역행렬을 구하라. \[\begin{bmatrix}
1& 0 \\
0& 3
\end{bmatrix}\]
(25)-(30)
a,b가 아래와 같이 주어졌다고 하자.
(25) a,b와 np.concatenate를 이용하여 아래와 같은 배열을 만들어라.
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
(26) a,b와 np.concatenate를 이용하여 아래와 같은 배열을 만들어라.
array([[1],
[1],
[1],
[1],
[1],
[1],
[1],
[1],
[1],
[1],
[2],
[2],
[2],
[2],
[2],
[2],
[2],
[2],
[2],
[2]])
(27) a,b와 np.concatenate를 이용하여 아래와 같은 배열을 만들어라.
array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]]
(28) a,b와 np.concatenate를 이용하여 아래와 같은 배열을 만들어라.
array([[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2]])
(29) a,b와 np.stack을 이용하여 아래와 같은 배열을 만들어라.
array([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2, 2, 2, 2, 2]]
(30) a,b와 np.stack을 이용하여 아래와 같은 배열을 만들어라.
array([[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2],
[1, 2]])
(31) 아래와 같은 배열이 있다고 하자.
numpy의 @ 연산자를 이용하여 \(\sum_{i=1}^{5}a_ib_i\)를 계산하라.
(32) 아래와 같은 배열을 생성하라.
numpy의 @연산자를 이용하여 \(\sum_{i=1}^{100}x_i^2\)을 계산하라.
(33) 아래와 같은 배열을 생성하라.
numpy의 @연산자를 이용하여 \(\frac{1}{n}\sum_{i=1}^{n}x_i\)를 계산하라.
(34) 표준정규분포에서 100개의 난수를 생성하라.
(35) 아래와 동일한 코드를 np.random.rand()로 구현하라.
(36) 아래와 같은 배열을 선언하라.
np.where를 이용하여 a의 모든 음수를 0으로 바꾸는 코드를 작성하라.
(37) 아래와 같은 배열을 선언하라.
위 배열의 최소값이 위치한 index를 return하라.
(38) 아래와 같은 배열을 선언하라.
차원의 수를 유지하면서 1열을 추출하는 코드를 작성하라. 즉 결과가 아래와 같이 나오도록 하라.
array([[0],
[4],
[8]])
(39)-(40)
(39) 자신의 학번으로 random seed 를 설정하라. [20,25)의 범위에서 100개의 정수를 랜덤으로 생성해 (10,10) shape의 배열을 만들어라.
(40) 39의 결과에서 20,21,22 는 각각 몇개씩 있는가?
2. 코드구현 II
(1)-(6) 아래의 코드를 실해하여 test_dic를 생성하라.
np.random.seed(43052)
att = np.random.choice(np.arange(10,21)*5,200)
rep = np.random.choice(np.arange(5,21)*5,200)
mid = np.random.choice(np.arange(0,21)*5,200)
fin = np.random.choice(np.arange(0,21)*5,200)
key = ['202212'+str(s) for s in np.random.choice(np.arange(300,501),200,replace=False)]
test_dic = {key[i] : {'att':att[i], 'rep':rep[i], 'mid':mid[i], 'fin':fin[i]} for i in range(200)}
del(att);del(rep);del(mid);del(fin);del(key)여기에서 202212345등은 학번을, att는 출석점수, rep는 레포트점수, mid는 중간고사점수, fin은 기말고사 점수를 의미한다.
(1) test_dic에서 출석점수가 70이상(70>=)인 학생들의 학번을 출력하는 코드를 작성하라.
(2) test_dic에서 출석점수가 70미만(<70)인 학생들의 수를 구하라.
(3) test_dic에서 출석점수가 70이상(70>=)인 학생들의 중간고사 점수의 평균을 계산하라.
(4) test_dic에서 중간고사 점수를 출력하는 코드를 작성하라.
(5) test_dic에서 중간고사 점수의 표준편차와 레포트점수의 표준편차를 구하여라. 어떤것이 더 큰가?
(6) test_dic에서 중간고사 점수가 가장 높은 사람의 학번을 출력하라.
주의: att,rep,mid,fin,key를 실행하여 소멸시키지 않고 그대로 이용하거나 np.random.choice()를 이용하여 재생성한 뒤 계산할 하지 말 것.
- 예를들면 (5)의 경우 np.std(mid), np.std(rep) 와 같은 식으로 구현하지 말 것.
(7) 성공확률이 0.45인 시행이 있다고 하자. 이 시행을 100번의 시행하였을 경우 73번 이상 성공할 확률은 얼마인가? 시뮬레이션을 이용하여 근사계산하라.
(8) 성공확률이 0.45인 시행이 있다고 하자. 이 시행을 100번 시행하였을 경우 10번이하로 실패하거나 90번이상 성공할 확률은 얼마인가? 시뮬레이션을 이용하여 근사계산하라.
(9) 아래와 같은 행렬을 선언하자.
아래의 블락매트릭스를 만들어라.
\(\begin{bmatrix} a_{11} & b_{11} & b_{12} & c_{11} & c_{12} & c_{13} \\ a_{21} & b_{21} & b_{22} & c_{21} & c_{22} & c_{23} \\ d_{11} & d_{12} & d_{13} & e_{11} & e_{12} & f_{11} \\ d_{21} & d_{22} & d_{23} & e_{21} & e_{22} & f_{21} \\ d_{31} & d_{32} & d_{33} & e_{31} & e_{32} & f_{31} \end{bmatrix}\)
여기에서 \(a_{ij}\)는 매트릭스 \({\bf A}\)의 원소이다.
(10) 표준정규분포에 10000개의 난수를 아래와 같이 생성하라.
\((i,j)\) 번째 원소가 \((x_i-y_j)^2\)인 (10000,10000) 매트릭스를 만들어라.
(11)-(16)
아래와 같은 매트릭스를 생성하라.
array([[ 0.38342049, 1.0841745 , 1.14277825, ..., -0.18506968,
1.05538764, 1.18701443],
[-0.25027283, -1.58045215, 0.1124153 , ..., 1.0321894 ,
0.40438012, -0.13491595],
[-0.76763724, -0.64294232, -0.24782396, ..., -0.01530161,
0.89125897, -0.82683395],
...,
[-1.41379028, 0.79611333, -0.71011837, ..., -0.9860352 ,
1.30755244, 2.18677233],
[ 1.33968105, -0.78457449, -0.10405858, ..., -0.71110186,
0.99841286, 2.34371635],
[-0.66422032, -0.07550233, 0.7405869 , ..., 1.03232398,
-0.18988252, -0.03578389]])
(11) 각 행의 합을 구하라. 즉 1행의 합, 2행의 합, … 100행의 합을 계산하라.
- 1행의합 = 0.38342049 + 1.0841745 + … + 1.18701443
(12) (11)의 결과로 나온 배열의 표준편차를 구하라.
(13) 각 열의 평균을 구하라. 즉 1열의 평균, 2열의 평균, … , 100열의 평균을 계산하라.
(14) (13)의 결과로 나온 배열의 표준편차를 구하라.
(15) a의 원소중 a>0 을 만족하는 원소의 평균을 구하여라.
(16) a의 원소중 a>3을 만족하는 원소의 수를 count하라.
(17)-(18)
아래와 같은 배열 a를 고려하자.
(17) 0에서 1로 바뀌는 부분을 count하라.
(18) 1에서 0으로 바뀌는 부분을 count하라.
[예시] 아래의 배열에서 0에서 1로 부분은 모두 세 군데이고, 1에서 0으로 바뀌는 부분은 모두 두 군데 이다.
0 0 0 1 0 1 0 0 0 1 1 1
(19)-(25)
(19) \(i=1,2,\dots,1000\)에 대하여 아래를 각각 구하라.
\[x_i= \cos(t_i)+\cos(3t_i)+\cos(5t_i)\]
\[y_i= \sin(t_i)+\sin(4t_i)\]
여기에서 \(t_i=\frac{2\pi i }{1000}\) 이다.
(20) \((x_i,y_i)\)를 그려라.
(21) 아래와 같은 변환을 통하여 \((w_i,z_i)\)를 얻어라.
\[w_i= \frac{1}{\sqrt{2}}x_i - \frac{1}{\sqrt{2}}y_i\]
\[z_i= \frac{1}{\sqrt{2}}x_i + \frac{1}{\sqrt{2}}y_i\]
\((w_i,z_i)\)를 시각화 하라.
(22) 아래와 같은 매트릭스를 만들어라.
\[{\bf A}=\begin{bmatrix} x_1 & y_1 \\ x_2 & y_2 \\ \dots & \dots \\ x_n & y_n \end{bmatrix}\]
(23) \({\bf A} {\bf B}\)의 첫번째 열과 두번째 열을 시각화한 결과가 \((w_i,z_i)\)과 동일하도록 적당한 (2,2) 매트릭스 \({\bf B}\)를 만들어라.
(24) \({\bf A}{\bf B}^2\)의 첫번째 열과 두번째 열을 시각화 하라.
(25) \(n=3,4,5,6,\dots\) 에 대하여 \({\bf A}{\bf B}^n\)을 반복적으로 그려보라. \((x_i,y_i)\)의 시각화 결과와 동일한 가장 작은 \(n\)은 얼마인가? \((w_i,z_i)\)의 시각화 결과와 동일한 가장 작은 \(n\)은 얼마인가?
_files/figure-html/cell-20-output-1.png)
_files/figure-html/cell-21-output-1.png)
_files/figure-html/cell-22-output-1.png)
_files/figure-html/cell-23-output-1.png)