[NumPy] 08. ndarray 반복시키기
Updated:
import numpy as np
8.1. 원소별로 반복시키기
- np.repeat(a,repeats,axis=None): a의 원소를 repeats만큼 반복시킨 ndarray를 반환한다. / axis가 있는 경우 해당 axis를 기준으로 반복시킨다.
a = 1
b = np.repeat(a,repeats=5)
print(f"b: {b.shape}\n {b}\n")
a = np.arange(1,5)
b = np.repeat(a,repeats=3)
print(f"b: {b.shape}\n {b}")
b: (5,)
[1 1 1 1 1]
b: (12,)
[1 1 1 2 2 2 3 3 3 4 4 4]
a = np.arange(6).reshape((2,3))
b = np.repeat(a,repeats=3,axis=0)
print(f"b: {b.shape}\n {b}")
c = np.repeat(a,repeats=3,axis=1)
print(f"c: {c.shape}\n {c}")
b: (6, 3)
[[0 1 2]
[0 1 2]
[0 1 2]
[3 4 5]
[3 4 5]
[3 4 5]]
c: (2, 9)
[[0 0 0 1 1 1 2 2 2]
[3 3 3 4 4 4 5 5 5]]
a = np.arange(6).reshape((2,3))
b = np.repeat(a,repeats=[2,1],axis=0 )
print(f"b: {b.shape}\n {b}")
c = np.repeat(a,repeats=[1,2],axis=0)
print(f"c: {c.shape}\n {c}")
d = np.repeat(a,repeats=[2,2],axis=0)
print(f"d: {d.shape}\n {d}")
b: (3, 3)
[[0 1 2]
[0 1 2]
[3 4 5]]
c: (3, 3)
[[0 1 2]
[3 4 5]
[3 4 5]]
d: (4, 3)
[[0 1 2]
[0 1 2]
[3 4 5]
[3 4 5]]
a = np.arange(6).reshape((2,3))
b = np.repeat(a,repeats=[3,2,2],axis=1)
print(f"b: {b.shape}\n {b}")
b: (2, 7)
[[0 0 0 1 1 2 2]
[3 3 3 4 4 5 5]]
8.2 전체 반복시키기
- np.tile(a,reps): a를 reps 반복한 ndarray를 반환한다.
a = np.arange(5)
print(f"a: {a.shape}\n {a}")
b = np.tile(a,reps=3)
print(f"b: {b.shape}\n {b}")
a: (5,)
[0 1 2 3 4]
b: (15,)
[0 1 2 3 4 0 1 2 3 4 0 1 2 3 4]
a = np.arange(5)
print(f"a: {a.shape}\n {a}")
# reps=[1,2], axis=0을 기준으로 1번 axis=1을 기준으로 2번 반복시킨다는 뜻
b = np.tile(a,reps=[1,2])
print(f"b: {b.shape}\n {b}")
c = np.tile(a,reps=[2,1])
print(f"c: {c.shape}\n {c}")
d = np.tile(a,reps=[2,2])
print(f"d: {d.shape}\n {d}")
a: (5,)
[0 1 2 3 4]
b: (1, 10)
[[0 1 2 3 4 0 1 2 3 4]]
c: (2, 5)
[[0 1 2 3 4]
[0 1 2 3 4]]
d: (2, 10)
[[0 1 2 3 4 0 1 2 3 4]
[0 1 2 3 4 0 1 2 3 4]]
a = np.arange(6).reshape((2,3))
print(f"a: {a.shape}\n {a}")
# reps=[1,2], axis=0을 기준으로 1번 axis=1을 기준으로 2번 반복시킨다는 뜻
b = np.tile(a,reps=[1,2])
print(f"b: {b.shape}\n {b}")
c = np.tile(a,reps=[2,1])
print(f"c: {c.shape}\n {c}")
d = np.tile(a,reps=[2,2])
print(f"d: {d.shape}\n {d}")
a: (2, 3)
[[0 1 2]
[3 4 5]]
b: (2, 6)
[[0 1 2 0 1 2]
[3 4 5 3 4 5]]
c: (4, 3)
[[0 1 2]
[3 4 5]
[0 1 2]
[3 4 5]]
d: (4, 6)
[[0 1 2 0 1 2]
[3 4 5 3 4 5]
[0 1 2 0 1 2]
[3 4 5 3 4 5]]
8.3. 좌표계 만들기
- np.meshgrid(**xi): xi를 basis로 하는 coordinate를 가진 ndarray를 반환한다.
# z = x^2 +y^2 계산하기
x = np.linspace(1,5,5)
print(f"x:{x.shape}\n {x}")
y = np.linspace(1,5,5)
print(f"y:{y.shape}\n {y}")
x_, y_ = np.meshgrid(x,y) # (x,y) 좌표계를 만들어냄
print(f"x_:{x_.shape}\n {x_}")
print(f"y_:{y_.shape}\n {y_}")
z = np.square(x_) + np.square(y_)
print(f"z:{z.shape}\n {z}")
x:(5,)
[1. 2. 3. 4. 5.]
y:(5,)
[1. 2. 3. 4. 5.]
x_:(5, 5)
[[1. 2. 3. 4. 5.]
[1. 2. 3. 4. 5.]
[1. 2. 3. 4. 5.]
[1. 2. 3. 4. 5.]
[1. 2. 3. 4. 5.]]
y_:(5, 5)
[[1. 1. 1. 1. 1.]
[2. 2. 2. 2. 2.]
[3. 3. 3. 3. 3.]
[4. 4. 4. 4. 4.]
[5. 5. 5. 5. 5.]]
z:(5, 5)
[[ 2. 5. 10. 17. 26.]
[ 5. 8. 13. 20. 29.]
[10. 13. 18. 25. 34.]
[17. 20. 25. 32. 41.]
[26. 29. 34. 41. 50.]]
Leave a comment