[넘파이(Numpy)]N차원 배열 생성(2) - zeros, ones, full, eye, arange, linspace, logspace

Jihwan Jung·2022년 7월 6일
1

🎲넘파이

목록 보기
2/11
post-thumbnail

💡오늘 배울 내용


넘파이(Numpy)와 N차원 배열 생성 두번째 시간입니다. 형식이 정해진 N차원 배열과 특정 범위의 값을 가지는 N차원 배열 생성을 함께 공부해보겠습니다.

np.zeros() np.ones()
np.full() np.eye()
np.zeros_like() np.ones_like() np.full_like()
np.arange() np.linspace np.logspace

🔎np.zeros()


#모든 요소들이 0으로 초기화된 N차원 배열 생성
arr = np.zeros((5, ), dtype=int)
print(arr)
>> [0 0 0 0 0]

arr2 = np.zero((2, 3), dtype=int)
print(arr2)
>> [[0 0 0]
    [0 0 0]]

np.zeros() 함수는 모든 요소들이 0으로 초기화 된 N차원 배열을 생성합니다. 함수의 인자값으로는 shape이 들어가며, 예를 들어 (2, 3)이 인자로 들어갔을 때 2행 3열로 된 2차원 배열을 생성합니다.

🔎np.ones()


#모든 요소들이 1로 초기화된 N차원 배열 생성
arr = np.ones((5, ), dtype=int)
print(arr)
>> [1 1 1 1 1]

arr2 = np.ones((2, 3), dtype=int)
print(arr2)
>> [[1 1 1]
    [1 1 1]]

np.ones() 함수는 모든 요소들이 1로 초기화 된 N차원 배열을 생성합니다. 함수의 인자값으로는 shape이 들어가며, 예를 들어 (2, 3)이 인자로 들어갔을 때 2행 3열로 된 2차원 배열을 생성합니다.

🔎np.full()


#모든 요소들이 지정된 값으로 초기화된 N차원 배열 생성
arr = np.full((5, ), 9)
print(arr)
>> [9 9 9 9 9]

arr2 = np.full((2, 3), 9)
print(arr2)
>> [[9 9 9]
    [9 9 9]]

np.full()함수를 이용하면 어떤 요소로 배열을 채울 것인지 정할 수 있습니다. np.full()함수의 인자로는 배열의 shape과 배열을 채울 요소가 들어갑니다. 당연히 정수 외의 값(문자열, 실수 등)으로도 배열을 채울 수 있습니다. 예를 들어 (2,3)과 9가 인자로 들어가면 2행 3열로 된 2차원 배열을 생성합니다.

🔎np.eye()


np.eye()함수는 조금 독특합니다. 입력한 shape을 가진, 대각 원소가 1인 행렬을 생성합니다. shape은 NxN 또는 NxM을 값으로 가질 수 있습니다.

arr = np.eye(2, 3, k=1, dtype=int)
print(arr)
>> [[0 1 0]
    [0 0 1]]

해당 소스코드는 (2, 3)의 shape을 가진 행렬의 대각 원소가 1임을 보여줍니다. k값이 1이므로 1행 2열을 기준으로 한 대각선에 1이 채워졌음을 알 수 있습니다.

arr = np.eye(3, dtype=int)
print(arr)
>> [[1 0 0]
    [0 1 0]
    [0 0 1]]

상단의 코드와 같이, np.eye함수의 인자로 정수 하나를 넣을 수도 있습니다. 그런 경우 입력한 정수 NxN의 정방 행렬을 생성하고, 대각원소에 1을 값으로 넣습니다.

🔎np.zeros_like()


인자로 배열을 받습니다. 모든 요소들이 0으로 초기화됩니다.

arr = np.array([[1, 2, 3],
                [4, 5, 6]])
arr_z = np.zeros_like(arr)
print(arr_z)
>> [[0 0 0]
    [0 0 0]]

🔎np.ones_like()


인자로 배열을 받습니다. 모든 요소들이 1로 초기화됩니다.

arr = np.array([[1, 2, 3],
                [4, 5, 6]])
arr_o = np.ones_like(arr)
print(arr_o)
>> [[1 1 1]
    [1 1 1]]

🔎np.full_like()


np.full_like()함수의 인자로는 배열과, 지정된 값이 들어갑니다. 입력받은 배열의 모든 요소들이 입력된 값으로 초기화됩니다.

arr = np.array([[1, 2, 3],
                [4, 5, 6]])
arr_f = np.full_like(arr, 99)
print(arr_f)
>> [[99 99 99]
    [99 99 99]]

🔎np.arange()


lst = list(range(0, 9, 2))
print(lst)
>> [0, 2, 4, 6, 8]

range()함수로 특정 범위의 값을 가지는 리스트를 만들 수 있는 것처럼, 넘파이의 np.arange()함수를 통해 특정 범위의 값을 가지는 N차원 배열을 만들 수 있습니다.

arr = np.arange(0, 9, 2)
print(arr)
>> [0 2 4 6 8]

파이썬의 range()함수를 활용하는 것과 동일하게, np.arange()함수의 인자로는 start, stop, step 값이 순서대로 들어갑니다. start값과 step값을 생략하고 stop값만 입력해도 0부터 stop전까지의 값을 가지는 배열을 만들 수 있습니다. 또한 step값을 생략하면 1씩 커지면서 배열을 생성합니다.

arr = np.arange(stop = 9, step = 2, start = 0)
print(arr)
>> [0 2 4 6 8]

다음과 같이 stop, step, start값을 지정해주면, 순서를 뒤집어도 같은 배열이 생성됩니다.
단, arange로 배열을 생성하면 stop 값 전까지의 값들로 배열을 만든다는 것을 기억해두어야 합니다.

🔎np.linspace()


np.linspace() 함수는 인자로 start, stop, num값을 받습니다. start는 배열의 시작값, stop은 배열의 끝 값이고, num은 start과 stop 사이를 몇개의 일정한 간격으로 배열을 만들지를 나타내는 값입니다. np.linspace()에서 stop값을 지정하면, stop값 까지 포함한 배열을 만듭니다. 이는 np.arange()와 다른 점입니다. 하지만 인자로 endspace=False를 포함시키면 stop값을 포함하지 않은 배열을 만들 수도 있습니다. 입력하지 않으면 endspace=True가 defualt입니다.

arr = np.linspace(0, 10, 11, dtype=int)
print(arr)
>> [0 1 2 3 4 5 6 7 8 9 10]


이미지를 통해 더 명확히 이해할 수 있습니다.

🔎np.logspace()


np.logspace() 함수는 인자로 start, stop, num값을 받고 base값을 추가로 입력해 줄 수 있습니다. logspace는 설정한 범위에서 로그로 분할한 위치의 값을 출력하며, base를 따로 입력해주지 않으면 상용로그가 기본 스케일이 됩니다.

arr = np.logspace(0, 5, 6, base=2, dtype=int)
print(arr)
>> [1 2 4 8 16 32]

profile
22.10月~24.07月 공군 암호병 복무중/ 사회 과학과 딥 러닝에 관심이 있는 학부생(CS&E)입니다. 기술과 사회에 대한 이해를 바탕으로, 비즈니스 감각과 기술적 역량을 함께 갖춘 인공지능 프로그래머•데이터 과학자로 성장하고 싶습니다.

0개의 댓글