1. 배열 생성

1) 0 배열 / 1 배열 / 랜덤 배열

  • ( )안에 shape 즉 배열의 크기를 입력하면 된다.
    예를 들어, $2\times 3$ 배열을 만들고 싶다면 (2, 3)으로 입력한다.
  • np.zeros_like(a), np.ones_like(a)를 사용하면 배열 a의 크기와 같은 배열이 만들어진다.
설명 command
0 배열 np.zeros()
1 배열 np.ones()
랜덤 배열 np.empty()
arr1 = np.zeros(5)
arr2 = np.ones((2, 3))
arr3 = np.empty((2, 2, 3))

2) 수열

  • 간격을 설정해서 수열 만들기

np.arange(시작, 끝, 간격)

  • 개수를 설정해서 수열 만들기:

np.linspace(시작, 끝, 갯수, endpoint=True or False)
np.logspace(시작, 끝, 갯수, endpoint=True or False)

       ※ 데이터 분석을 할 때 수가 너무 크면 로그 변환을 하기도 한다..

arr1 = np.arange(0, 10, 0.25)
arr2 = np.linspace(0, 10, 10)
arr3 = np.linspace(0, 10, 10, endpoint=False)
arr4 = np.logspace(0, 10, 10)

2. 배열 변형

1) 배열 변형

전치 행렬

  • 차원의 행과 열을 바꾼다. arr.T

배열 변형

  • arr.reshape(바꿀 차원)
  • 행과 열 중 하나만 고정하고 싶을 때에는 -1을 사용한다.

배열 펼치기: ‘C’는 1행 2행으로 읽고, ‘F’는 1열 2열로 읽는다.

arr.ravel(order='C' or 'F')
arr.flatten(order='C' or 'F')

arr1 = np.arange(12)
arr2 = arr1.reshape(2, 6)
arr3 = arr1.reshape(-1, 4) # 4개의 열로 바꾼다.
arr4 = arr3.T

arr4.ravel(order = 'C') # default
arr4.ravel(order = 'F')
arr4.flatten(order = 'C') # default
arr4.flatten(order = 'F')

주의

원소의 개수가 $n$개인 1차원 배열과 $n\times 1$을 의미하는 1열을 가지는 2차원 배열
다르다.

arr1
arr1.reshape(12,1)

2) 배열 연결

배열 합치기

  • 합칠 배열을 리스트 형식으로 입력한다.
  • 예를 들어 배열1, 배열2의 shape가 (3, 4)라고 하자.
    axis=0으로 합치면 이 하나 추가되어 (2, 3, 4)이 되고,
    axis=1으로 합치면 이 하나 추가되어 (3, 2, 4)로 되고,
    axis=2으로 합치면 깊이가 하나 추가되어 (3, 4, 2)가 되는 것이다.

np.stack([arr1, arr2, ...], axis=0 or 1 or 2)

arr1 = np.ones((3, 4))
arr2 = np.zeros((3, 4))

arr3 = np.stack([arr1, arr2], axis=0)
arr3, arr3.shape

arr3 = np.stack([arr1, arr2], axis=1)
arr3, arr3.shape

arr3 = np.stack([arr1, arr2], axis=2)
arr3, arr3.shape

배열 원소 합치기

  • 합칠 배열을 리스트 형식으로 입력한다.
  • 예를 들어 배열1, 배열2의 shape가 (3, 4)라고 하자.
    hstack이나 c_이면 이 추가되어 (3, 8)이 되고,
    vstack이나 r_이면 이 추가되어 (6, 4)가 되고,
    dstack이면 깊이가 추가되어 (3, 4, 2)가 된다.

np.hstack([...]) 또는 np.c_[...]
np.vstack([...]) 또는 np.r_[...] np.dstack([...])

arr3 = np.hstack([arr1, arr2])
arr3, arr3.shape

arr3 = np.vstack([arr1, arr2])
arr3, arr3.shape

arr3 = np.dstack([arr1, arr2])
arr3, arr3.shape

배열 복사

  • np.tile(arr, 차원의 크기)
  • 예를 들어 배열1의 차원이 (3, 2)이고,
    이 배열을 차원 (2, 2)로 복사하고 싶다고 하자.
    그러면 차원의 크기가 (3*2, 2*2)=(6, 4)인 행렬이 된다.
arr1 = np.arange(6).reshape(3, 2)
arr2 = np.tile(arr1, (2, 2))
arr2, arr2.shape
(array([[0, 1, 0, 1],
        [2, 3, 2, 3],
        [4, 5, 4, 5],
        [0, 1, 0, 1],
        [2, 3, 2, 3],
        [4, 5, 4, 5]]),
 (6, 4))

댓글남기기