Numpy

특징

  1. 모든 값이 동일한 타입을 갖음(비교:리스트는 다른 타입도 가능)
  2. 인덱스는 튜플
  3. 차원은 행렬의 랭크가 됨
  4. shape는 차원을 튜플로 표현함
a = np.array([[1, 2, 3], [4, 5, 6]])
print(a)
print(a.shape)
#[[1, 2, 3], 
  [4, 5, 6]]
#(2, 3)

arrange

range와 같은 기능

np.arrange

np.zeros((2, 2))

np.full((2, 2), 7)

np.eye(2)

d = np.eye(2)        # Create a 2x2 identity matrix
print(d)
#[[1. 0.]
# [0. 1.]]

random (각종 확률 관련 분포들)

  • np.random.random((2, 2))
    => 2바이2 행렬에 0~1 사이의 랜덤한 값이 저장된다.

  • np.random.randn(2,2)
    => 2바이2인 행렬 표준정규분포 그러니까 mean값이 0, 표준편차가 1

  • np.random.normal(10, 2, [2,2])
    => 가우시안 분포에서 샘플링을 하는데
    10인 mean 표준편차가 2

특정 row, column 뽑기

row_r1 = a[1, :]    # Rank 1 view of the second row of a  
row_r2 = a[1:2, :]  # Rank 2 view of the second row of a
row_r3 = a[[1], :]  # Rank 2 view of the second row of a
print(row_r1, row_r1.shape)
print(row_r2, row_r2.shape)
print(row_r3, row_r3.shape)

=> 로우만 뽑기

# We can make the same distinction when accessing columns of an array:
col_r1 = a[:, 1]
col_r2 = a[:, 1:2]
print(col_r1, col_r1.shape)
print()
print(col_r2, col_r2.shape)

=> 칼럼만 뽑기

=> 이렇게 세로로도 데이터를 관리하고 배우면 되는 부분인듯

array에 조건 넣기

import numpy as np

a = np.array([[1,2], [3, 4], [5, 6]])

bool_idx = (a > 2)  # Find the elements of a that are bigger than 2;
                    # this returns a numpy array of Booleans of the same
                    # shape as a, where each slot of bool_idx tells
                    # whether that element of a is > 2.

print(bool_idx)

=> 이 조건을 먹인 값의 value 값 뽑기

# We use boolean array indexing to construct a rank 1 array
# consisting of the elements of a corresponding to the True values
# of bool_idx
print(a[bool_idx])

# We can do all of the above in a single concise statement:
print(a[a > 2])

dot, @ 두 백터의 내적 값

x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])

v = np.array([9,10])
w = np.array([11, 12])

# Inner product of vectors; both produce 219
print(v.dot(w))
print(np.dot(v, w))
print(v @ w)

=> (911) + (1012) = 219

T로 축 바꾸기

x = np.array([[1,2],[3,4]])

print(np.sum(x))  # Compute sum of all elements; prints "10"
print(np.sum(x, axis=0))  # Compute sum of each column; prints "[4 6]"
print(np.sum(x, axis=1))  # Compute sum of each row; prints "[3 7]"
print(x)
print("transpose\n", x.T)

=> T로 쉽게 요소들의 축을 바꿀 수 있다.

=> 코테를 생각해보니 엄청 파괴적인 기능

profile
긍정적인 에너지를 가진 개발자, 이태성입니다.

0개의 댓글