수업시간에 했던 넘파이 실습문제들에 대해서 정리하고자 한다.
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
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]]
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()
을 사용하자
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을 더해주기만 하면 된다.
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]]]
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]]]
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]]
그때 당시 굉장히 쉽게 다뤘던 것들인데 넘파이를 사용하지 않다가 다시보니 또 새롭다.. 이제부터 판다스 정리하자🤯