데이터 분석 입문 - numpy 라 이브 러 리 기초 지식

9255 단어
numpy 라 이브 러 리 는 데이터 분석의 이기 로 고성능 의 과학적 계산 과 데이터 분석 에 사용 된다.python 을 사용 하여 데이터 분석 을 진행 합 니 다. numpy 라 이브 러 리 는 반드시 파악 해 야 합 니 다.numpy 는 강력 한 데이터 분석 기능 을 제공 하지 않 고 ndarray 데이터 구 조 를 제공 하여 대량의 데 이 터 를 신속하게 처리 할 수 있 습 니 다.
shape 와 dtype 속성
ndarray 는 numpy 의 다 차원 배열 대상 으로 numpy 라 이브 러 리 의 주요 데이터 구조 입 니 다. 이것 은 두 가지 중요 한 속성 이 있 습 니 다. shape 와 dtype, shape 는 배열 차원 을 설명 하 는 원 그룹 이 고 dtype 은 배열 데이터 형식 을 설명 하 는 데 사 용 됩 니 다.
data = [1,2,3,4,5]
arr1 = np.array(data)
arr1
Out[6]: array([1, 2, 3, 4, 5])
arr1.shape
Out[7]: (5,)
arr1.dtype
Out[8]: dtype('int32')

위의 코드 는 arr 1 은 길이 가 5 인 1 차원 배열 이 고 데이터 형식 은 int 32 라 는 것 을 설명 합 니 다.
ndarray 배열 의 데이터 가 모두 정수 일 때 데이터 형식 은 int 32 이 고 소수 가 있 을 때 데이터 형식 은 float 64 입 니 다.
ndarray 배열 의 데 이 터 는 같은 유형 이 어야 합 니 다. 서로 다른 유형의 데이터 가 있 으 면 dtype 은 입 니 다.
numpy 는 주로 데 이 터 를 처리 하 는 데 사용 되 기 때문에 ndarray 배열 의 데 이 터 는 같은 데이터 형식 이 어야 합 니 다. 그렇지 않 으 면 수학 적 계산 을 할 수 없습니다.
ndarray 만 들 기
numpy 는 array 함수 가 ndarray 대상 을 만 들 고 array 함 수 는 list 목록 형식의 대상 을 입력 합 니 다.
list1 = [1.2,2.3,4.6,7.8]
ndarray1 = np.array(list1)
ndarray1
Out[22]: array([1.2, 2.3, 4.6, 7.8])

들 어 오 는 list 목록 이 같은 다 차원 목록 일 때 다 차원 ndarray 배열 대상 을 만 듭 니 다.
list2 = [[1.2,2.3,4.6,7.8],[12.2,13.5,1.6,9.8]]
ndarray2 = np.array(list2)
ndarray2
Out[25]: 
array([[ 1.2,  2.3,  4.6,  7.8],
       [12.2, 13.5,  1.6,  9.8]])

다 차원 목록 의 길이 가 일치 하지 않 을 때 ndarray 대상 을 만 드 는 데이터 형식 dtype 은 object 가 되 며 구체 적 인 데이터 형식 이 아 닙 니 다.
list3 = [[1.2,2.3,4.6,7.8],[12.2,13.5,1.6,9.8,0.8]]
ndarray3 = np.array(list3)
ndarray3
Out[28]: 
array([list([1.2, 2.3, 4.6, 7.8]), list([12.2, 13.5, 1.6, 9.8, 0.8])],
      dtype=object)

numpy 는 0 또는 1 의 배열 을 만 드 는 데 사용 되 는 zeros 와 ones 두 가지 방법 도 제공 했다.
zero 방법 으로 배열 값 이 0 인 ndarray 배열 을 만 듭 니 다:
np.zeros(5)//     5,     0 ndarray    
np.zeros((3,4))//  3 4 ,     0     
np.zeros((3,4,5))//     3,  0 ndarray    。

ones 방법 으로 만 배열 값 이 1 인 ndarray 배열 을 만 듭 니 다:
np.ones(5)//     5,     1 ndarray    
np.ones((3,4))//  3 4 ,     1     
np.ones((3,4,5))//     3,  1 ndarray    。

arange () 방법 은 python 에 내 장 된 range () 함 수 를 직접 호출 하여 초기 값 이 0 걸음 길이 가 1 인 배열 을 생 성 합 니 다.
data3 = np.arange(13)
data3
Out[12]: array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12])

empty () 방법 으로 새 배열 을 만 듭 니 다. 배열 값 은 무 작위 로 생 성 되 어 메모리 공간 을 차지 합 니 다.
data4 = np.empty((2,2))
data4
Out[20]: 
array([[7.32086553e-315, 1.01777082e-311],
       [0.00000000e+000, 7.31249282e-315]])

형식 변환 ndarray 는 astype 방법 을 제공 하여 데이터 형식 을 다른 데이터 형식 으로 변환 합 니 다.
부동 소수점 을 정수 로 바 꿀 때, 자동 으로 소수 부분 을 절취 합 니 다:
data5 = np.array([2.2,3.4,5.6])
data6 = data5.astype(np.int32)
data6
Out[23]: array([2, 3, 5])

astype 은 모든 숫자 문자열 배열 을 수치 형식 으로 변환 할 수 있 습 니 다.
data7 = np.array(['2.4','3.5','4.6'])
data8 = data7.astype(np.float64)
data8
Out[34]: array([2.4, 3.5, 4.6])

수조 간 의 수학 연산 은 두 수조 간 에 가감 승제 간 의 수학 연산 을 할 수 있다.
두 배열 사이 의 더하기:
data1 = np.array([1,2,3,4])
data2 = np.array([5,6,7,8])
data3 = data1 +data2
data3
Out[38]: array([ 6,  8, 10, 12])

두 배열 사이 의 상쇄:
data1 = np.array([1,2,3,4])
data2 = np.array([5,6,7,8])
data3 = data1 - data2
data3
Out[45]: array([-4, -4, -4, -4])

두 배열 사이 의 상승:
data1 = np.array([1,2,3,4])
data2 = np.array([5,6,7,8])
data3 = data1 * data2
data3
Out[49]: array([ 5, 12, 21, 32])

두 배열 을 나 누 기:
data1 = np.array([1,2,3,4])
data2 = np.array([5,6,7,8])
data3 = data1 / data2
data3
Out[53]: array([0.2       , 0.33333333, 0.42857143, 0.5       ])

두 배열 간 에 수학 연산 을 할 때 배열 간 의 shape 대상 값 이 일치 해 야 하 며 길이 가 일치 해 야 한 다 는 것 이다.그렇지 않 으 면 ValueError: operands could not be broadcast together with shapes 의 오 류 를 보고 합 니 다.
data1 = np.array([1,2,3,4])
data2 = np.array([5,6,7,8,9])
data3 = data1+ data2

위의 코드 는 ValueError: operands could not be broadcast together with shapes (4,) (5,) 오류, data 1 배열 의 shape (4,), data 2 의 shape (5,) 로 수학 연산 이 불가능 합 니 다.
배열 의 색인 과 절편
색인 을 통 해 NumPy 배열 의 한 위치 에 있 는 수 치 를 방문 할 수 있 습 니 다.배열 색인 은 0 에서 시작 하여 길이 - 1 에서 끝 납 니 다.
data1 = np.arange(10)
data1.size
Out[73]: 10
data1[0]
Out[74]: 0
data1[9]
Out[75]: 9
data1[10]

위의 코드 에서 길이 가 10 인 1 차원 배열 data 1, 색인 은 0 에서 시작 하여 9 (길이 10 - 1) 에서 끝 납 니 다.data1 [9] 을 통 해 배열 의 10 번 째 요 소 를 방문 합 니 다. data1 [10] 을 통 해 Index Error: index 10 is out of bounds for axis 0 with size 10 의 오류 가 발생 합 니 다. 속칭 배열 이 경 계 를 넘 었 다 고 합 니 다.
이것 은 1 차원 배열 의 경우 다 차원 배열 에 대해 구체 적 인 요 소 를 방문 하려 면 이 요소 가 각 차원 의 색인 위 치 를 지정 해 야 합 니 다.
data1 = [[[1,2,3],[4,5,6]],[[7,8,9,],[10,11,12]]]
data1[1][1][1]
Out[85]: 11

상기 코드 에서 data 1 은 2X2X 3 의 3 차원 배열 로 11 에 접근 하려 면 3 차원 의 색인 data 1 [1] [1] [1] [1] 을 지정 해 야 합 니 다.
data 1 [1] [1] 되 돌아 온 결 과 는 1 차원 배열 입 니 다.
data1[1][1]
Out[86]: [10, 11, 12]

data 1 [1] 은 2 차원 배열 을 되 돌려 줍 니 다.
data1[1]
Out[87]: [[7, 8, 9], [10, 11, 12]]

데이터 1 [1] [1] [1] 은 데이터 1 [1, 1, 1] 의 효과 와 마찬가지 로 되 돌아 오 는 수 치 는 모두 11 이다.
NumPy 는 ndarray 배열 에서 슬라이스 작업 을 제공 합 니 다. ndarray 배열 의 하위 보 기 를 되 돌려 줍 니 다.
data1 = np.arange(10)
data1[1:4]
Out[91]: array([1, 2, 3])
data1[:4]
Out[92]: array([0, 1, 2, 3])
data1[4:]
Out[93]: array([4, 5, 6, 7, 8, 9])

data1 [1: 4] 절편 작업 은 색인 1 부터 색인 4 까지 색인 4 요 소 를 포함 하지 않 은 배열 을 되 돌려 줍 니 다.data1 [: 4] 절편 작업 은 색인 0 부터 색인 4 까지 색인 4 요 소 를 포함 하지 않 는 배열 입 니 다.data1 [4:] 절편 작업 은 색인 4 부터 마지막 요소 까지 의 배열 을 되 돌려 줍 니 다.
절편 작업 은 원래 배열 의 보 기 를 되 돌려 줍 니 다. 배열 을 다시 만 드 는 것 이 아니 라 이 절편 에 대해 할당 작업 을 하면 원래 배열 이 색인 위치 에 있 는 요소 의 수 치 를 수정 할 수 있 습 니 다.
data1 = np.arange(10)
data1[4:]=10
data1
Out[98]: array([ 0,  1,  2,  3, 10, 10, 10, 10, 10, 10])

data1 배열 은 색인 4 부터 마지막 색인 9 까지 요소 수 치 를 10 으로 바 꿉 니 다.
2 차원 과 이상 의 다 차원 배열 도 절편 작업 을 지원 할 수 있 지만 1 차원 배열 보다 복잡 하 다.
data1 = np.array([[1,2,3],[4,5,6],[7,8,9]])
data1
Out[100]: 
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])
data1[:2]
Out[101]: 
array([[1, 2, 3],
       [4, 5, 6]])
data1[:2,:2]
Out[102]: 
array([[1, 2],
       [4, 5]])
data1[:2,1:]

다 차원 배열 의 절편 은 모든 차원 에서 절편 작업 을 할 수 있다.
불 형 배열 은 말 그대로 불 형 배열 이 지수 그룹의 요소 일 때 불 값 True 와 False 이다.
변수의 비교 연산 이 발생 한 결 과 는 불 형 이 며, ndarray 배열 의 비교 연산 도 예외 가 아니다. 결과 도 불 형 이기 때문에 하나의 숫자 유형 이나 문자 형식의 ndarray 숫자 를 비교 연산 을 통 해 불 형 배열 로 변환 할 수 있다.
data1 = np.array(['Tom','Yong','Jim','John'])
data1 == 'Tom'
Out[111]: array([ True, False, False, False])

위의 코드 는 먼저 문자 형식의 ndarray 배열 data 1 을 만 들 고 그 다음 에 배열 을 비교 합 니 다. data 1 = = 'tom' 은 배열 의 요소 가 'tom' 과 같 으 면 True 로 돌아 갑 니 다. 그렇지 않 으 면 False 로 돌아 갑 니 다.
불 형 수치 중 가장 자주 사용 되 는 방법 은 설정 값 입 니 다.
arr = np.random.randn(3,4)
arr
Out[62]: 
array([[ 0.52428143, -1.04842533, -1.00102911, -0.86488208],
       [ 3.20965669,  0.4379931 , -0.82962251,  0.63862152],
       [-1.03235591, -1.17507334, -0.01953273, -1.13759955]])
arr[arr<0] = 0
arr
Out[64]: 
array([[0.52428143, 0.        , 0.        , 0.        ],
       [3.20965669, 0.4379931 , 0.        , 0.63862152],
       [0.        , 0.        , 0.        , 0.        ]])

위의 코드 는 arr 배열 의 0 보다 작은 요 소 를 0 으로 설정 합 니 다.
배열 변환 배열 변환 은 선형 대수 에서 행렬 변환 과 같다.NumPy 는 transpose 방법 과 특수 속성 T 를 제공 하여 배열 전환 을 실현 합 니 다.
data1 = np.arange(4)
data1
Out[71]: array([0, 1, 2, 3])
data1.T
Out[72]: array([0, 1, 2, 3])

1 차원 배열 의 전 치 는 역시 배열 자체 이다.
data1 = np.arange(14).reshape(2,7)
data1
Out[74]: 
array([[ 0,  1,  2,  3,  4,  5,  6],
       [ 7,  8,  9, 10, 11, 12, 13]])
data1.T
Out[75]: 
array([[ 0,  7],
       [ 1,  8],
       [ 2,  9],
       [ 3, 10],
       [ 4, 11],
       [ 5, 12],
       [ 6, 13]])

2 차원 배열 의 전 치 는 줄 과 열 이 대응 하 는 위치의 요 소 를 서로 바 꾸 는 것 이다.
특수 속성 T 는 1 차원 과 2 차원 배열 에 만 적용 되 며, 3 차원 이상 의 배열 에 대해 서 는 transpose 방법 을 사용 해 야 배열 전환 이 가능 하 다.
transpose 방법 을 호출 할 때 원 그룹 에 전송 해 야 합 니 다. 어떤 축 에 따라 전환 할 지 지정 합 니 다.원 그룹의 요소 갯 수 와 배열 의 차원 이 일치 해 야 합 니 다.3 차원 배열 에 적합 하 다 면, 원 조 의 개수 도 3 이 어야 한다.
data1 = np.arange(24).reshape(2,3,4)
data1
Out[107]: 
array([[[ 0,  1,  2,  3],
        [ 4,  5,  6,  7],
        [ 8,  9, 10, 11]],
       [[12, 13, 14, 15],
        [16, 17, 18, 19],
        [20, 21, 22, 23]]])
data1.transpose((2,1,0))
Out[108]: 
array([[[ 0, 12],
        [ 4, 16],
        [ 8, 20]],
       [[ 1, 13],
        [ 5, 17],
        [ 9, 21]],
       [[ 2, 14],
        [ 6, 18],
        [10, 22]],
       [[ 3, 15],
        [ 7, 19],
        [11, 23]]])

위의 코드 는 먼저 2x3x 4 의 3 차원 배열 을 만 든 다음 에 transpose (2, 1, 0) 방법 으로 배열 의 전 치 를 실현 합 니 다.data 1 배열 의 축 은 숫자 0, 1, 2 로 표시 합 니 다 (3 차원 공간의 x, y, z 축 과 유사 합 니 다).transpose (2, 1, 0) 를 호출 할 때 원 그룹 (2, 1, 0) 은 data 1 의 0 축 과 2 축 을 교체 하고 1 축 은 변 하지 않 음 을 표시 합 니 다.
배열 은 원본 데이터 의 보 기 를 되 돌려 줍 니 다. 새로운 배열 을 다시 만 들 지 않 습 니 다.

좋은 웹페이지 즐겨찾기