Numpy(넘파이) 활용하기

seulzzang·2022년 10월 6일
0


수업시간에 했던 넘파이 실습문제들에 대해서 정리하고자 한다.

📍실습 1

  • x=[1, 2, 3, 4, 5, 6, 7, 8, 9], y=[10, 20, 30, 40, 50, 60, 70, 80, 90] 이 배열들로 Numpy 를 사용하여 3 X 3 행렬을 만든 뒤 행렬합과 행렬곱을 구해주세요
import numpy as np
  1. 3 X 3 행렬 만들기
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [10, 20, 30, 40, 50, 60, 70, 80, 90]

new_x = np.array(x).reshape(3, 3)
new_y = np.array(y).reshape(3, 3)

print(new_x)
print(new_y)
[[1 2 3]
 [4 5 6]
 [7 8 9]]
[[10 20 30]
 [40 50 60]
 [70 80 90]]
  1. 행렬합과 행렬곱 구하기
sum_xy = new_x + new_y
print(sum_xy)
print(new_y.dot(new_x)) # YX
print(np.dot(new_x, new_y))
[[11 22 33]
 [44 55 66]
 [77 88 99]]
[[ 300  360  420]
 [ 660  810  960]
 [1020 1260 1500]]
[[ 300  360  420]
 [ 660  810  960]
 [1020 1260 1500]]

참고로 그냥 new_x * new_y를 해주면 각 원소들을 곱한 값들만 도출해준다. 행렬 곱을 구해주려면 .dot()을 사용하자

📍실습 2

  • 1에서 20 사이의 균일한간격으로 30 개의 숫자를 만들고 모든값에 숫자 10 을 더해주세요.
x = np.linspace(1, 20, 30)
x += 10
print(x)
[11.         11.65517241 12.31034483 12.96551724 13.62068966 14.27586207
 14.93103448 15.5862069  16.24137931 16.89655172 17.55172414 18.20689655
 18.86206897 19.51724138 20.17241379 20.82758621 21.48275862 22.13793103
 22.79310345 23.44827586 24.10344828 24.75862069 25.4137931  26.06896552
 26.72413793 27.37931034 28.03448276 28.68965517 29.34482759 30.        ]

linspace를 이용해서 배열을 생성해준 뒤 10을 더해주기만 하면 된다.

📍실습 3

  • 1~100까지 난수가 들어가있는 2x10x10 배열을 만들고 50보다 크거나 같은 값은 1, 50 보다 작은 값은 2 로 변환하고 2번째 배열에 아래와 같이 붉은색 위치만 뽑아주세요.
  1. 1~100까지 난수가 들어가있는 2x10x10 배열 만들기
x = np.random.randint(1, 101, size=(2, 10, 10))
print(x)
[[[ 38   3  50  80  43  61   2  44  85  65]
  [ 42  41  86  43  25  54  91  61  33  54]
  [ 56  56  73   9  45  35  87  89  21  39]
  [ 82  51   6  46  75  47  29   4  56  69]
  [100   3  72   1  74  25  57  87  87  16]
  [ 34  45  84   8  79   9  44  87  78  12]
  [ 17  35  68  25  90  95  64  51  46  21]
  [  4  94  31  37  28 100  57  46  38  17]
  [ 10  20  20  95  20  81  42  54  21  21]
  [ 42  79  33  39   8  56  60  71  87  15]]
 [[ 57  29  95  64  99  19  23  52  36   2]
  [ 29  62  16  85  68  25  34  85  82   6]
  [ 38  80  14  11  85   7  86   5  48  56]
  [ 94  57  68  43  20  19  85   3  60  50]
  [ 40  19  17  11  22  15  92  28  96  90]
  [ 83  58  99  64  20  82  67  76 100  37]
  [ 68  26  98  65  76  95  30   9  86  26]
  [ 43  95  62  54  52  41  39  54  80   6]
  [ 46  88  20  69  14  64  62  30  99  61]
  [ 26  71  36  15  18  17  68  33  28  17]]]
  1. np.where()로 조건 걸어주기
x = np.where(x >= 50, 1, 2)
print(x)
[[[2 2 1 1 2 1 2 2 1 1]
  [2 2 1 2 2 1 1 1 2 1]
  [1 1 1 2 2 2 1 1 2 2]
  [1 1 2 2 1 2 2 2 1 1]
  [1 2 1 2 1 2 1 1 1 2]
  [2 2 1 2 1 2 2 1 1 2]
  [2 2 1 2 1 1 1 1 2 2]
  [2 1 2 2 2 1 1 2 2 2]
  [2 2 2 1 2 1 2 1 2 2]
  [2 1 2 2 2 1 1 1 1 2]]
 [[1 2 1 1 1 2 2 1 2 2]
  [2 1 2 1 1 2 2 1 1 2]
  [2 1 2 2 1 2 1 2 2 1]
  [1 1 1 2 2 2 1 2 1 1]
  [2 2 2 2 2 2 1 2 1 1]
  [1 1 1 1 2 1 1 1 1 2]
  [1 2 1 1 1 1 2 2 1 2]
  [2 1 1 1 1 2 2 1 1 2]
  [2 1 2 1 2 1 1 2 1 1]
  [2 1 2 2 2 2 1 2 2 2]]]
  1. 붉은색 부분 슬라이싱 해주기
print(x[1, 5:, 5:])
[[1 1 1 1 2]
 [1 2 2 1 2]
 [2 2 1 1 2]
 [1 1 2 1 1]
 [2 1 2 2 2]]

그때 당시 굉장히 쉽게 다뤘던 것들인데 넘파이를 사용하지 않다가 다시보니 또 새롭다.. 이제부터 판다스 정리하자🤯

profile
중요한 것은 꺾이지 않는 마음

0개의 댓글