[NumPy] 01. ndarray 만들기
Updated:
import numpy as np
1.1 ndarray 만들기
ndarray는 기본적으로 np.array()를 이용해 만든다.
parameter에 숫자를 넣으면 0차원 ndarray를 반환하게 되고 n차원 python list를 넣어주면 해당하는 n차원 ndarray를 반환한다.
a = np.array(3)
b = np.array([1,2,3])
c = np.array([[1,2],[3,4]])
print("a:",a)
print("b:",b)
print("c:\n",c)
a: 3
b: [1 2 3]
c:
[[1 2]
[3 4]]
a = 3
b = [1,2,3]
c = [[1,2],[3,4]]
a_np = np.array(a)
b_np = np.array(b)
c_np = np.array(c)
print("a_np:",a_np)
print("b_np:",b_np)
print("c_np:\n",c_np)
a_np: 3
b_np: [1 2 3]
c_np:
[[1 2]
[3 4]]
각각의 ndarray는 shape을 지닌다.
- 0차원 ndarray shape : (), 길이 0
- 1차원 ndarray shape : (a,), 길이 1
- 2차원 ndarray shape : (a,b), 길이 2
- 3차원 ndarray shape : (a,b,c,), 길이 3
- n차원 ndarray shape : (a,b,c,d, … , n) , 길이 n
e.g.) 1차원 ndarray의 길이가 2라면 shape이 (2,)가 된다. 2차원 ndarray가 2개의 행과 3개의 행으로 이루어져있다면 shape은 (2,3)이 된다.
a = np.array(3)
b = np.array([1,2,3])
c = np.array([[1,2],[3,4]])
print("a.shape:",a.shape)
print("b.shape:",b.shape)
print("c.shape:",c.shape)
a.shape: ()
b.shape: (3,)
c.shape: (2, 2)
1.2. 특정한 값을 지닌 ndarray 만들기
- np.zeros(shape) : 해당 shape을 지니면서 모든 원소가 0인 ndarray를 반환한다.
- np.ones(shape) : 해당 shape을 지니면서 모든 원소가 1인 ndarray를 반환한다.
- np.full(shape,fill_value) : 해당 shape을 지니면서 모든 원소가 fill_value인 ndarray를 반환한다.
- np.zeros(shape) : 해당 shape을 지니면서 빈 ndarray를 반환한다. (즉, ndarray가 원소 없이 형태만 가진 것을 뜻한다. 이 때 빈 자리에는 아무런 의미 없는 값이 담긴다.)
a = np.zeros((2,3))
b = np.ones((2,3))
c = np.full((2,3),2.89)
d = np.empty((3,4))
print("a:\n",a)
print("b:\n",b)
print("c:\n",c)
print("d:\n",d)
a:
[[0. 0. 0.]
[0. 0. 0.]]
b:
[[1. 1. 1.]
[1. 1. 1.]]
c:
[[2.89 2.89 2.89]
[2.89 2.89 2.89]]
d:
[[-2.00000000e+000 -4.34107967e-311 2.96439388e-323 0.00000000e+000]
[ 0.00000000e+000 6.82116729e-043 4.75989482e-090 7.24776406e-042]
[ 3.61305083e+174 3.35111218e-033 3.99910963e+252 8.34402697e-309]]
- np.zeros_like(a): a와 동일한 shape을 가진 np.zeros() ndarray를 반환한다.
- np.ones_like(a): a와 동일한 shape을 가진 np.ones() ndarray를 반환한다.
- np.full_like(a,fill_value): a와 동일한 shape을 지니면서 원소가 모두 fill_value인 ndarray를 반환한다.
- np.empty_like(a): a와 동일한 shape을 가진 np.empty() ndarray를 반환한다.
a = [[1,2,3],[11,12,13]]
b = np.zeros_like(a)
c = np.ones_like(a)
d = np.full_like(a,2.89)
e = np.empty_like(a)
print("b:\n",b)
print("c:\n",c)
print("d:\n",d)
print("e:\n",e)
b:
[[0 0 0]
[0 0 0]]
c:
[[1 1 1]
[1 1 1]]
d:
[[2 2 2]
[2 2 2]]
e:
[[4613690120261567775 4613690120261567775 4613690120261567775]
[4613690120261567775 4613690120261567775 4613690120261567775]]
1.3. 특정 구간을 가진 ndarray 만들기
- np.arange(): python의 range()와 동일한 형태의 ndarray를 반환한다.
- np.linspace(start,stop,num): start와 stop를 포함해서 갯수가 num인 ndarray를 반환한다. 이 때 숫자간 차이는 동일하다.(즉, (stop-start)/(num-1)이 간격이다.)
print(np.arange(10))
print(np.arange(1,10))
[0 1 2 3 4 5 6 7 8 9]
[1 2 3 4 5 6 7 8 9]
print(np.linspace(0,10,5))
print(np.linspace(1,9,3))
[ 0. 2.5 5. 7.5 10. ]
[1. 5. 9.]
# a의 첫번째 열 : np.linspace(1,7,5)
# a의 첫번째 열 : np.linspace(2,8,5)
# a의 첫번째 열 : np.linspace(3,9,5)
# 이와 같은 식으로 응용할 수 있다.
a = np.linspace([1,2,3],[7,8,9],5)
print("a:\n",a)
a:
[[1. 2. 3. ]
[2.5 3.5 4.5]
[4. 5. 6. ]
[5.5 6.5 7.5]
[7. 8. 9. ]]
1.4. random 값을 지닌 ndarray 만들기
- np.random.randn(d0,d1,…,dn): (d0,d1,…,dn) shape을 지니면서 standard normal distribution을 따르는 원소를 가진 ndarray를 반환한다.
- np.random.normal(loc,scale,size): shape이 size이면서 N(loc,scale^2) - normal distribution을 따르는 원소를 가진 ndarray를 반환한다.
- np.random.rand(d0,d1,…dn): (d0,d1,…,dn) shape을 지닌 0과 1사이의 난수 ndarray를 반환한다.
- np.random.uniform(low,high,size) : shape이 size이면서 [low, high)인 uniform distribution을 따르는 원소를 가진 ndarray를 반환한다.
- np.random.randint(low,high,size): shape이 size이면서 [low, high) 사이의 정수 난수를 원소를 가진 ndarray를 반환한다.
random_value = np.random.randn(2,3)
print("random_value:\n",random_value)
print("shape:",random_value.shape,'\n')
normal_np = np.random.normal(2,3,(2,3))
print("normal_np:\n",normal_np,'\n')
# 첫번째 열 : np.random.normal(1,2,(5,))
# 두번째 열 : np.random.normal(2,3,(5,))
# 세번째 열 : np.random.normal(3,4,(5,))
# 이와 같은 식으로 응용할 수 있다.
normal_np = np.random.normal([1,2,3],[2,3,4],(5,3))
print("normal_np:\n",normal_np)
random_value:
[[ 0.55165579 0.17489209 0.89612111]
[-0.79765198 1.37896578 -0.21204699]]
shape: (2, 3)
normal_np:
[[ 3.11727935 -0.34660729 -3.33892664]
[ 1.80392307 3.44479997 3.27225456]]
normal_np:
[[ 0.66115261 1.75664677 -0.99031452]
[ 2.88768003 1.32299346 3.40809972]
[-0.16024267 3.39617363 12.64251311]
[ 2.74725821 -3.30345528 -4.17343465]
[ 0.66780106 2.67214394 14.02177063]]
rand_np = np.random.rand(3,4)
print("rand_np:\n",rand_np)
print("rand_np.shape:",rand_np.shape,'\n')
uni_np = np.random.uniform(1,10,(4,5))
print("uni_np:\n",uni_np,'\n')
randint_np = np.random.randint(1,5,(2,3))
print("randint_np:\n",randint_np)
rand_np:
[[0.92237086 0.10226899 0.68722793 0.07666568]
[0.34076098 0.5011707 0.37861489 0.915571 ]
[0.54037928 0.67335574 0.7048206 0.35539302]]
rand_np.shape: (3, 4)
uni_np:
[[1.01827901 1.97141779 7.08257181 8.96082668 3.88664561]
[5.37003373 4.69628757 9.30805507 8.70199084 7.40483342]
[4.35839514 4.53542873 4.4706763 4.67097125 6.54466408]
[7.52547548 6.32478172 7.32259887 1.54413473 1.74974933]]
randint_np:
[[2 2 4]
[2 1 2]]
uni_np = np.random.uniform([1,2],[3,4],(4,2))
print("uni_np:\n",uni_np,'\n')
randint_np = np.random.randint([1,2,3],[4,5,6],(5,3))
print("randint_np:\n",randint_np)
uni_np:
[[2.32969404 2.8951195 ]
[1.70712646 2.91813374]
[1.72107973 3.85343056]
[2.27889213 3.85849369]]
randint_np:
[[1 4 5]
[3 4 5]
[2 3 3]
[2 2 4]
[1 3 3]]
Leave a comment