데이터 분석/넘파이

[Numpy 연습문제]

eunnys 2023. 11. 8. 21:03

[문제-1] 길이가 10인 0벡터를 만드세요.

 

import numpy as np
a = np.zeros(10, dtype=int)
print(a)
[0 0 0 0 0 0 0 0 0 0]

 

 

[문제-2] 길이가 10이며 다섯번째 원소만 1이고 나머지 원소는 모두 0인 벡터를 만드세요.

 

b = np.zeros(10, dtype=int)
b[4] = 1
print(b)
[0 0 0 0 1 0 0 0 0 0]

 

 

[문제-3] 10 부터 49까지의 값을 가지는 벡터를 만드세요.

 

c = np.arange(10, 50)
print(c)
[10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49]

 

 

[문제-4] 위 벡터의 순서를 바꾸세요.

 

print(c[::-1])
print(np.flip(c))
r = np.arange(49, 9, -1)
print(r)
[49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26
 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10]

 

 

[문제-5] 0부터 8까지의 값을 가지는 3x3 행렬을 만드세요.

 

d = np.arange(0, 9).reshape(3,3)
print(d)
[[0 1 2]
 [3 4 5]
 [6 7 8]]

 

 

[문제-6] 벡터 [1,2,0,0,4,0] 에서 원소의 값이 0이 아닌 원소만 선택한 벡터를 만드세요.

 

e = np.array([1,2,0,0,4,0])
x = e != 0
print(e[x])
[1 2 4]

 

 

[문제-7] 3x3 단위 행렬(identity matrix)을 만드세요

 

print(np.identity(3, dtype=int))
print(np.eye(3, dtype=int))
[[1 0 0]
 [0 1 0]
 [0 0 1]]

 

 

[문제-8] 난수 원소를 가지는 3x3 행렬을 만드세요

 

 

np.random.seed(10)
f = np.random.randint(0,100, (3,3))
print(f)
[[ 9 15 64]
 [28 89 93]
 [29  8 73]]

 

 

[문제-9] 위에서 만든 난수 행렬에서 최대값/최솟값 원소를 찾으세요.

 

print(np.amax(f)) # 93
print(np.amin(f)) # 8

 

 

[문제-10] 위에서 만든 난수 행렬에서 행 평균, 열 평균을 계산하세요.

 

# 각 행의 평균
print(f.mean(axis=1))

# 각 열의 옆균
print(f.mean(axis=0))
[29.33333333 70.         36.66666667]
[22.         37.33333333 76.66666667]

 

 

[문제-11] 5x5짜리 정방행렬의 단위행렬을 생성하시오

 

print(np.identity(5, dtype=int))
[[1 0 0 0 0]
 [0 1 0 0 0]
 [0 0 1 0 0]
 [0 0 0 1 0]
 [0 0 0 0 1]]

 

 

[문제-12] 10~50까지 값 9개를 정수로 발생시켜 출력

 

np.random.seed(50)
g = np.random.randint(10, 51, size=9)
print(g)
[42 21 43 40 14 16 47 16 32]

 

 

[문제-13] '문제-12' 배열의 shape을 3x3으로 변환

 

print(g.reshape(3, 3))
[[42 21 43]
 [40 14 16]
 [47 16 32]]

 

 

[문제-14] '문제-13' 배열의 각 행끼리의 합을 구하여 출력

 

print(g.sum(axis=1))
[106  70  95]

 

 

[문제-15] '문제-13' 배열의 각 열 중 최대값 구하여 출력

 

print(np.amax(g, axis=0))
[47 21 43]

 

 

[문제-16] '문제-13' 배열의 전체 요소의 평균을 구하여 출력

 

print(np.mean(g))
30.11111111111111

 

 

[문제-17] 1~10 사이의 정수를 요소로 하는 2x3 배열 생성

 

h = np.random.randint(1, 11, (2,3))
print(h)
[[6 3 8]
 [5 4 7]]

 

 

[문제-18] 10~20 사이의 정수를 요소로 하는 3x2 배열 생성

 

i = np.random.randint(10, 21, (3,2))
print(i)
[[14 11]
 [15 20]
 [19 10]]

 

 

[문제-19] '문제-17'과 '문제-18'의 두 배열의 행렬 곱을 구하여 출력

 

j = h.dot(i)
print(j)
[[281 206]
 [263 205]]

 

 

[문제-20] '문제-19' 배열의 전치 행렬을 구하여 출력

 

print(np.transpose(j))
[[281 263]
 [206 205]]

 

 

[문제-21] 로또 번호 생성하기 (1~46 사이의 중복되지 않은 정수 6개 추출)

 

k = np.random.choice(np.arange(1, 47), 6, replace=False)
print(k)
[32  9 17 40 43  7]

'데이터 분석 > 넘파이' 카테고리의 다른 글

[Numpy] 데이터 분석 실습 문제  (0) 2023.11.09
[Numpy] random 모듈  (0) 2023.11.08
[Numpy] Broadcasting  (0) 2023.11.08
[Numpy] 인덱싱 / 슬라이싱 / 반복  (1) 2023.11.08
[Numpy] 배열 연산  (0) 2023.11.08