이 게시물은 Python에서 NumPy를 시작하기 위한 소개 문서를 제공합니다.
# numpy를 이 파이썬 스크립트로 가져오기 import numpy # 목록을 만들고 파이썬 기본 라이브러리에 추가 a = [1,2,3] b = [1,2,3] a+b
[1, 2, 3, 1, 2, 3]
# numpy로 배열 선언 a_np = numpy.array([1,2,3]) # 배열의 유형을 확인하여 배열이 numpy 배열인지 확인 type(a_np)
numpy.ndarray
# numpy 배열에는 .dtype 속성이 있어 a_np.dtype 배열의 numpy 데이터 유형을 확인할 수 있습니다 .
dtype('int32')
# a_np는 정수 유형입니다. float a_np[0] = 13.33 a_np 를 할당하려고 합니다.
배열([13, 2, 3])
# numpy 배열에는 .ndim 속성이 있어 a_np.ndim 배열의 차원 수를 볼 수 있습니다 .
1
# numpy 배열에는 .size 속성도 있습니다. # .size는 배열 a_np.size 에 포함된 요소의 수를 볼 수 있도록 합니다.
삼
# numpy 배열을 사용할 때 수학이 요소별로 가능해짐 # -- 일부 요소별 수학 연산을 테스트하기 위해 두 번째 numpy 배열 생성 b_np = numpy.array([2,3,4]) # 추가 a_np + b_np
배열([11, -1, -1])
# 빼기 a_np - b_np
배열([11, -1, -1])
# 곱셈 a_np * b_np
배열([26, 6, 12])
# 다른 하나의 거듭 제곱 a_np ** b_np
배열([169, 8, 81], dtype=int32)
# 나눗셈 a_np / b_np
배열([6.5 , 0.66666667, 0.75 ])
# 모듈로; a_np 모듈로 2 테스트 a_np % numpy.array([2,2,2])
배열([1, 0, 1], dtype=int32)
# 모듈로; b_np 모듈로 2 테스트 b_np % numpy.array([2,2,2])
배열([0, 1, 0], dtype=int32)
# numpy는 "범용 함수" 사용을 허용합니다. # 범용 함수는 numpy 배열로 요소별로 작동합니다 . # 한 가지 예는 .sin입니다. numpy.sin(a_np)
배열([0.42016704, 0.90929743, 0.14112001])
# 또 다른 예는 .sqrt numpy.sqrt(a_np)
배열([3.60555128, 1.41421356, 1.73205081])
# numpy를 사용하여 2D 데이터 테이블 만들기 c_np = numpy.array([[1,2,3], [4,5,6]]) c_np
배열([[1, 2, 3], [4, 5, 6]])
# 인덱싱, 즉 정의된 셀에 저장된 값을 얻는 것; # 여기: 첫 번째 행의 셀, 첫 번째 열 c_np[0][0]
1
# 여기: 마지막 행의 셀, 마지막 열 c_np[-1][-1]
6
# 여기: 두 번째 행의 셀, 첫 번째 열 c_np[1][0]
4
# 위의 c_np[1,0] 을 수행하는 다른 방법
4
# 간단한 1d numpy 배열을 통해 슬라이싱 # 여기: d_np에서 두 번째 및 세 번째 값 가져오기 d_np = numpy.array([7,9,11]) d_np[1:3]
배열([ 9, 11])
# 첫 번째와 세 번째 요소를 얻습니다. d_np[0:3:2] # from:to:step
배열([ 7, 11])
# 여기: d_np에서 다른 모든 요소 가져오기 d_np[::2]
배열([ 7, 11])
# 여기: 모든 세 번째 요소 가져오기 d_np[::3]
배열([7])
# numpy 모듈 e_np = numpy.arange(0,26)의 메서드인 .arange를 사용하여 1D 배열을 만들 수 있습니다. #param1: from; param2: to(마지막 값 제외) e_np
배열([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 , 24, 25])
# e_np의 타입을 확인해보자 type(e_np)
numpy.ndarray
# numpy 배열은 numpy .reshape 메서드를 사용하여 모양을 변경할 수 있습니다. f_np = e_np.reshape(2,13) #param1: 행 수; param2: 열 수 f_np
배열([[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]])
# 1D에서 2D를 만드는 것뿐만 아니라 .reshape를 사용할 수 있습니다. # 예를 들어 다음을 참조하세요. g_np = numpy.array([1,2,3,4,5,6,7,8,9,10,11,12]).reshape(3,2,2) g_np
배열([[[ 1, 2], [ 3, 4]], [[ 5, 6], [ 7, 8]], [[ 9, 10], [11, 12]]])
# g_np는 3D도 아닙니다. 이 데이터 큐브에서 일부 차원을 슬라이스하자 # 두 번째 차원의 첫 번째 방향에 있는 모든 값 g_np[:,0,:]
배열([[ 1, 2], [ 5, 6], [ 9, 10]])
# 하나의 특정 셀; 모든 차원에서 첫 번째 g_np[0,0,0]
1
# 하나의 특정 셀; 모든 차원에서 마지막 g_np[-1,-1,-1]
12
# 하나의 특정 셀; 모든 차원에서 마지막 SECOND g_np[-2,-2,-2]
5
# 다른 예제로 numpy에 대한 첫 번째 튜토리얼을 완료해 봅시다. # 2차원 배열을 만들어 보여드립니다. example = numpy.array([[1,2,3,4,5], [1.1,2.2,3.3,4.4,5.5], [1.11,2.22,3.33,4.44 ,5.55], [1.111,2.222,3.333,4.444,5.555], [1.1111,2.2222,3.3333,4.4444,5.5555]]) 예
배열([[1. , 2. , 3. , 4. , 5. ], [1.1 , 2.2 , 3.3 , 4.4 , 5.5 ], [1.11 , 2.22 , 3.33 , 4.44 , 5.55 ], [1.111 , 2.222 , 3.333 , 4.444 , 5.555 ], [1.1111, 2.2222, 3.3333, 4.4444, 5.5555]])
# 이제 값 2.2, 4.4, 2.222 및 4.444에 액세스할 수 있습니다. 단 한 줄의 코드 example[1::2,1::2]
배열([[2.2 , 4.4 ], [2.222, 4.444]])
# 이제 참조로 복사 할 때 발생하는 몇 가지 예 a_np = numpy.array([1,2,3]) b_np = a_np[:1] b_np
배열([1])
# b_np 요소 변경 b_np[0] = 10000 b_np
배열([10000])
# npw 확인하자 a_np a_np
배열([10000, 2, 3])
# 위는 참조로 복사한 효과입니다. # 이는 numpy 배열을 슬라이스할 때 발생합니다. # 표준 Python 목록에서 발생합니까? a = [1,2,3] b = a [:1] b[0] = 1000
[1, 2, 3]
# 참조에 의한 복사는 pyhton에서 기본 목록을 슬라이싱할 때 발생하지 않습니다. # 참조로 복사하지 않으려면 numpy의 일부로 .copy() 메서드를 사용할 수 있습니다. c_np = numpy.array([1,2,3,4,5]) d_np = c_np.copy() d_np [0] = 10000 c_np[0] = 99999 # 이제 c_np를 확인합시다. print("this is c_np:" + str(c_np))
이것은 c_np:[99999 2 3 4 5]입니다.
# d_np는요? d_np
배열([10000, 2, 3, 4, 5])
# .copy()로 복사하면 독립적인 참조가 있는 두 객체로 작업할 수 있습니다.
최적화 및 시뮬레이션을 전문으로하는 산업 엔지니어 (R, Python, SQL, VBA)
Leave a Reply