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