Published 2021. 1. 27. 08:19

zeros

zeros = np.zeros([3,3])
zeros

>>
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])

0으로 만들기


ones

zeros = np.ones([10,5])
zeros

>>
array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])

1로 만들기


reshape

arr = np.arange(12).reshape(3,4)
arr

>> 
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11]])

 

arr1 = arr.reshape(-1)
arr1

>>
[ 0  1  2  3  4  5  6  7  8  9 10 11]

 

arr2 = arr.reshape(-1,2) # 2로 나누고 나머지로 차원 나누어라
arr2 

>>
array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [10, 11]])

 

arr3 = arr.reshape(-1, 3, 2) # 2개짜리로 나누고 3차원으로 나눈 후 나머지로 차원 나눠라 
arr3

>>
array([[[ 0,  1],
        [ 2,  3],
        [ 4,  5]],

       [[ 6,  7],
        [ 8,  9],
        [10, 11]]])

Ravel

arr.shape

>> (3,4)

arr = arr.ravel()
arr.shape

>> (12,)

차원을 평평하게, 즉 1차원으로 바꾸어 준다.


np.expand_dims()

안의 값은 유지하되 차원 수를 늘리고 싶을 때가 있음
이럴 때 사용하는 것이 expand_dims

 

arr1 = np.expand_dims(arr, 0) # 앞에다가 차원 늘려준다
arr1.shape

>>
(1,12)
arr2 = np.expand_dims(arr, -1) # 뒤에다가 차원 늘려준다.
arr2.shape

>>
(12,1)

 


index

arr = np.arange(9).reshape(3,3)
arr[1,2]

>> 5

slicing

print(arr[1:])
print(arr[1:,1:])

>>
[[3 4 5]
 [6 7 8]]
[[4 5]
 [7 8]]

Boolean indexing

data = np.random.randn(3, 3)
data

>>
array([[-0.86883424,  0.2072883 ,  0.73811635],
       [ 0.46172519, -1.57595357,  0.53245106],
       [-0.28444254, -1.03684887,  1.26579295]])
data <= 0

>>
array([[ True, False, False],
       [False,  True, False],
       [ True,  True, False]])
data[data <= 0]

>>
array([-0.86883424, -1.57595357, -0.28444254, -1.03684887])
data[data <= 0] = 1
data

>>
array([[1.        , 0.2072883 , 0.73811635],
       [0.46172519, 1.        , 0.53245106],
       [1.        , 1.        , 1.26579295]])

Broadcast

tensorflow나 pytorch로 계산하면 broadcast의 개념도 잘 이해해야 함

broadcast는 연산 하려는 서로 다른 두개의 행렬의 shape가 같지 않고,
한쪽의 차원이라도 같거나 또는 값의 갯수가 한 개 일 때
이를 여러 복사를 하여 연산을 함

 

arr = np.arange(9).reshape(3,3)
arr

>>
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])


arr * 3

>>
array([[ 0,  3,  6],
       [ 9, 12, 15],
       [18, 21, 24]])


arr + np.array([1,2,3])

>>
array([[ 1,  3,  5],
       [ 4,  6,  8],
       [ 7,  9, 11]])

 

 

arr1 = np.random.randint(2, size=27).reshape(3,3,3)
arr2 = np.random.randint(2, size=9).reshape(3,3)
print(arr1)
print(arr2)

>>
[[[1 0 0]
  [0 1 0]
  [0 1 1]]

 [[0 1 0]
  [1 1 0]
  [0 1 0]]

 [[0 0 0]
  [1 0 0]
  [0 0 0]]]
  
>>  
[[1 0 1]
 [1 1 1]
 [1 1 1]]

 

 

arr1+arr2

>>
array([[[2, 0, 1],
        [1, 2, 1],
        [1, 2, 2]],

       [[1, 1, 1],
        [2, 2, 1],
        [1, 2, 1]],

       [[1, 0, 1],
        [2, 1, 1],
        [1, 1, 1]]])


np.sum(arr1 + arr2, axis=0) # 0차원 기준으로 더하기

>>
array([[4, 1, 3],
       [5, 5, 3],
       [3, 5, 4]])
       

np.sum(arr1 + arr2, axis=-1) 

>>
array([[3, 4, 5],
       [3, 5, 4],
       [2, 4, 3]])

 

 

np.argmax : 가장 큰 원소의 인덱스

np.argmin : 가장 작은 원소의 인덱스

np.unique : 중복 지우고 유니크한 값만 추출

'📌 Python' 카테고리의 다른 글

Python - 시각화 기초2  (0) 2021.01.31
Python - 시각화 기초  (0) 2021.01.27
Python - Tensor  (0) 2021.01.27
Python - 정규표현식 (3)  (0) 2021.01.24
Python - 정규표현식 (2)  (0) 2021.01.22
복사했습니다!