NumPy 101: 10분 안에 NumPy 배우기

Mar 25 2023
Numpy는 과학 컴퓨팅 및 데이터 분석을 위한 인기 있는 Python 라이브러리입니다. 숫자 데이터를 조작하고 처리하기 위한 많은 유용한 함수 및 메서드와 함께 강력한 배열 개체를 제공합니다.

Numpy는 과학 컴퓨팅 및 데이터 분석을 위한 인기 있는 Python 라이브러리입니다. 숫자 데이터를 조작하고 처리하기 위한 많은 유용한 함수 및 메서드와 함께 강력한 배열 객체를 제공합니다. 이 블로그 게시물에서는 더 빠르고 깔끔한 코드를 작성하는 데 도움이 되는 필수 numpy 작업 중 일부를 공유합니다. 당신이 초보자이든 전문가이든, 이 numpy 치트 시트에서 유용한 정보를 찾을 수 있기를 바랍니다.

설치

numpy가 없으면 먼저 설치해야 합니다. 이틀 안에 설치할 수 있습니다:

핍 사용

pip install numpy

먼저 아나콘다 환경을 활성화한 후 다음 명령을 사용합니다.

conda install -c anaconda numpy

numpy를 사용하여 작업을 수행하기 전에 이를 가져와야 합니다.

import numpy as np

아주 기본적인 것부터 시작해 numpy 클래스의 스칼라 값을 생성하는 방법을 알아봅시다.

# int type

python_int = 2
numpy_int = np.int32(2)
print(type(python_int)) # ---> <class 'int'>
print(type(numpy_int)) # ---> <class 'numpy.int32'>

# float type

python_float = 2.5
numpy_float = np.float32(2.5)
print(type(python_float)) # ---> <class 'float'>
print(type(numpy_float)) # ---> <class 'numpy.float32'>

이제 배열 또는 목록으로 넘어갈 시간입니다.

1차원 배열

이제 numpy의 방법을 사용하여 1차원 배열을 만들어 봅시다 array().

# creating an 1-D array of int type

one_d_array_int = np.array([1,2,3]) 
print(one_d_array_int) # ---> output : [1 2 3]

# creating an 1-D array of float type

one_d_array_float = np.array([1.5,2.5,3.5])
print(one_d_array_float) # ---> output : [1.5 2.5 3.5]

이제 numpy의 방법을 사용하여 2차원 배열을 만들어 봅시다 array().

# 2-D int array

two_d_array_int = np.array([
                [1,2,3],
                [4,5,6],
                [7,8,9]
               ])
print(two_d_array_int) # ---> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

# 2-D float array

two_d_array_float= np.array([
                [1.1,2.1,3.0],
                [4.1,5.1,6.1],
                [7.1,8.1,9.1]
               ])
print(two_d_array_float) # ---> [[1.1, 2.1, 3.0], [4.1, 5.1, 6.1], [7.1, 8.1, 9.1]]

이제 any 배열의 차원을 구하는 방법을 알아보겠습니다.

# If the array is a 1-D array, then it'll return 1
print(one_d_array_int.ndim) # ---> output : 1

# If the array is a 2-D array, then it'l return 2
print(two_d_array_int.ndim) # ---> output : 2


print(one_d_array_int.shape) # ---> output : (3,)


print(two_d_array_int.shape) # ---> output : (3, 3)

배열의 데이터 유형 가져오기

print(one_d_array_int.dtype) # ---> output : dtype('int32')

배열 요소 조작

새 배열을 만든 다음 이 새 배열에서 작업을 수행하겠습니다.

a = np.array([[1,2,3,4,5,6,7],[8,9,10,11,12,13,14]])
print(a) # ---> output : [[ 1  2  3  4  5  6  7]
#                         [ 8  9 10 11 12 13 14]]

첫 번째 행의 세 번째 요소에 액세스하고 싶다고 가정해 보겠습니다.

# accessing 1st row's 3rd element
print(a[0,2]) # ---> output : 3

numpy는 또한 0 기반 인덱싱을 따르며 이로 인해 첫 번째 행을 얻으려면 1이 아닌 0을 써야 하고 세 번째 요소가 필요한 경우 열 값에 대해서도 마찬가지입니다. 2가 아니라 3.

특정 행 또는 열에만 액세스

# accessing only the first row
print(a[0,:]) # ---> output : [1 2 3 4 5 6 7]

# accessing only the second column
print(a[:,1]) # ---> output : [2 9]

# [startindex:endindex:stepsize]
print(a[0, 1:-1:2]) # ---> output : [2 4 6]

요소의 값 변경

a[0,2] = 99
print(a) # ---> output : [[ 1  2 99  4  5  6  7]
#                         [ 8  9 10 11 12 13 14]]

Numpy의 특수 배열

제로 매트릭스

# creating a zero matrix of shape(2,3)

print(np.zeros((2,3))) # ---> output : [[0. 0. 0.]
 #                                      [0. 0. 0.]
 #                                      [0. 0. 0.]]

하나의 매트릭스

# All 1s matrix
print(np.ones((3,2,2))) # ---> output : [[[1. 1.]
#                                        [1. 1.]]
#
#                                        [[1. 1.]
#                                         [1. 1.]]
#                                      
#                                        [[1. 1.]
#                                         [1. 1.]]]

# creating ones matrix int type
print(np.ones((3,2,2)), dtype='int32') # ---> output : [[[1 1]
#                                        [1 1]]
#
#                                        [[1 1]
#                                         [1 1]]
#                                      
#                                        [[1 1]
#                                         [1 1]]]

무작위 배열

특정 모양의 임의의 값을 갖는 배열을 갖고 싶다면 np.random.rand()메소드를 사용할 수 있습니다.

print(np.random.rand(3,3)) # ---> output : [[0.10671372 0.31133182 0.56572354]
#                                           [0.34792672 0.88867917 0.25310353]
#                                           [0.70052117 0.53243035 0.67948057]]

특정 모양의 임의의 int 값을 갖는 배열을 갖고 싶다면 np.random.randint()메소드를 사용할 수 있습니다.

# np.random.randint(start_value,end_value,size)

print(np.random.randint(-1,5, size=(3,3))) # ---> output : [[0 -1 2]
#                                                           [4 2 1]
#                                                           [4 4 0]]

end_value배타적이므로 출력 배열에 5가 없습니다.

를 언급하지 않으면 start_value기본 시작 값은 0이 됩니다. 를 언급해야 합니다 end_value.

단위 행렬

Identiity 행렬을 만들려면 np.identity()방법을 사용할 수 있습니다.

print(np.identity(3)) # ---> output : [[1. 0. 0.]
#                                      [0. 1. 0.]
#                                      [0. 0. 1.]]

배열 전치

a = np.random.randint(-1,5, size = (2,3)) # creating a random int array
print(a)                                  # output : [[ 2 -1  1]
                                          #           [ 0  1  1]]

print(a.T)                                # output : [[ 2  0]
                                          #           [-1  1]
                                          #           [ 1  1]]

배열의 모양을 변경하려면 reshape()방법을 사용할 수 있습니다.

a = np.random.randint(-1,5, size = (2,3)) # creating a random int array
print(a)                                  # output : [[ 2 -1  1]
                                          #           [ 0  1  1]]

print(a.reshape(3,2))                     # output : [[ 2  0]
                                          #           [-1  1]
                                          #           [ 1  1]]

print(a.reshape(1,6))                     # output : [[1 2 3 2 2 2]]

임의의 숫자로 채우기

특정 값으로 배열을 채우려면 np.full()방법을 사용할 수 있습니다.

print(np.full((3,3), 14)) # ---> output : [[14 14 14]
#                                          [14 14 14]
#                                          [14 14 14]]

특정 값을 가진 배열을 원하고 다른 배열과 동일한 모양을 원할 경우 np.full_like()메소드를 사용할 수 있습니다.

# Any other number (full_like)
print(np.full_like(a, 4)) # ---> output : [[4 4 4 4 4 4 4]
#                                          [4 4 4 4 4 4 4]]

어레이 복사

a = [1,2,3]             # created an array a
b = [10,20,30]          # created an array b
print(a)                # output : [1 2 3]
a = b                   # I'll explain it below
b[1] = 200              # changed b's 2nd element's value to 200
print(a)                # output : [10 200 30] HOW??????

여기에서 의 값은 b에 복사되지 않고 a대신 어떤 값이 차례로 변경되는지 가리 a키기 시작 하지만 동일한 항목을 변경할 때마다 에 반영됩니다 .bba

스태킹 어레이

여러 배열을 세로 또는 가로로 쌓고 싶다면 각각 vstack()메소드 또는 hstack()메소드를 사용할 수 있습니다.

# Vertically stacking vectors
v1 = np.array([1,2,3,4])                # created array v1
v2 = np.array([5,6,7,8])                # create array v2

np.vstack([v1,v2,v1,v2])                # output : [[1 2 3 4]
                                        #           [5 6 7 8]
                                        #           [1 2 3 4]
                                        #           [5 6 7 8]]
print(np.hstack([v1,v2]))               # output : [1 2 3 4 5 6 7 8]

a = np.array([1, 2, 3])
print(a.sum())                               # sum of all values of a
print(a.max())                               # max of all elements of a
print(a.mean())                              # return mean of a
print(np.median(a))                          # return median of a
print(np.std(a))                             # return standard deviation of a

이것으로 numpy 치트시트 블로그 게시물을 마칩니다. Python에서 배열 및 행렬로 작업하는 데 유용하고 몇 가지 새로운 요령을 배웠기를 바랍니다. Numpy는 다양한 수치 계산 및 데이터 분석 작업을 수행하는 데 도움이 되는 강력하고 다재다능한 라이브러리입니다. numpy에 대해 자세히 알아보려면 공식 문서나 사용 가능한 일부 온라인 자습서 및 과정을 확인할 수 있습니다. 읽고 행복한 코딩에 감사드립니다!