[Python Data Analysis]8.numpy ndarray 이해하기


numpy ndarray 이해하기

numpy는 특히 벡터 및 행렬 연산에 있어 편의성을 제공하는 라이브러리로, 여러분들이 추후 많이 사용하게 될 pandasmatplotlib의 기반이 되는 라이브러리라고 할 수 있습니다.

numpy에서는 기본적으로 array(어레이)라는 단위로 데이터를 관리하고, 이에 대한 연산을 수행하게 됩니다. 이 때 array는, 고등 수학에서 말하는 ‘행렬(matrix)’과 그 성격이 거의 유사하다고 보면 됩니다.

array 정의하기

array는 기본적으로 np.array() 함수를 사용하여 정의합니다. 이 때 Python 리스트 혹은 기존에 정의된 다른 array가 함수의 인자로 입력됩니다. array를 생성할 때 인자로 입력되는 Python 리스트는 1차원 혹은 그 이상의 차원을 가지는 것이 될 수 있습니다.

numpy에서 array를 생성하고 사용할 때는, 해당 array의 크기(혹은 모양)에 대한 정보를 항상 트래킹하고 있는 것이 중요합니다. array에 대하여 .shape 멤버 변수를 확인하면, 해당 array의 크기를 즉각적으로 확인할 수 있습니다.

한편, 몇몇 특수한 array의 경우 한 번의 함수 호출로 생성할 수 있습니다. 예를 들어 모든 성분이 0으로 되어 있는 array를 정의하고자 할 경우, np.zeros() 함수를 사용하면 한 방에 됩니다. 혹은 모든 성분이 1로 되어 있는 array를 정의하고자 할 경우 np.ones() 함수를 사용하면 됩니다.

그리고 np.arange() 함수는 일정한 차이를 갖는 연속적인 값의 성분들로 구성된 array를 생성할 때 사용합니다. 이는 Python에서의 range() 함수와 그 형태가 매우 유사합니다.

np.zeros(), np.ones(), np.arange() 등의 함수를 호출할 시, 생성할 array의 크기가 반드시 인자로 입력되어야 합니다.

array의 데이터형

모든 array는 고유한 데이터형을 가집니다. array를 정의할 때 사용자가 데이터형을 따로 명시하지 않은 경우, numpy에서는 가장 적절한 데이터형을 자동으로 인식하여 해당 array에 부여합니다.

여러분이 array를 정의할 때 데이터형을 직접 지정할 수도 있습니다. array의 데이터형을 지정하고자 할 경우, np.array() 함수를 호출할 시 아래의 예시와 같이 dtype 인자의 값을 명시하면 됩니다.

    arr = np.array(data, dtype=np.float64)

intfloat 뒤에 붙는 숫자는, 해당 array의 각 성분을 표현할 때 메모리 상에서 몇 비트를 사용할 것인지 나타내는 숫자입니다. 이 숫자가 더 클 수록, 해당 array 상에서 길이가 더 긴 정수 혹은 실수를 사용할 수 있습니다. array의 데이터형을 간단하게 나타내기 위해, numpy에서는 i, u, f, c 등과 같이 축약된 코드를 사용하기도 합니다.

여러분들이 기존에 정의한 array의 데이터형을 변환할 수도 있는데, 이 때는 .astype() 함수를 사용하면 됩니다. .astype() 함수의 인자에, 변환할 데이터형을 명시해 줍니다.

numpy에서 사용 가능한 데이터형(dtype) 정리

| 데이터형 | 데이터형 코드 | 설명 | | ———————————– | ————— | ———————————–| | int8, int16, int32, int64 | i1, i2, i4, i8 | 부호가 있는 [8, 16, 32, 64]비트 정수 | | uint8, uint16, uint32, uint64 | u1, u2, u4, u8 | 부호가 없는 [8, 16, 32, 64]비트 정수 | | float16, float32, float64, float128 | f2, f4, f8, f16 | [16, 32, 64, 128]비트 실수 | | complex64, complex128, complex256 | c8, c16, c32 | [64, 128, 256]비트 복소수 | | bool | b | 불리언 (True 또는 False) | | object | O | Python 오브젝트 형 | | string_ | S | 문자열 | | unicode_ | U | 유니코드 문자열 |

array 관련 연산

array 간에는 더하기, 빼기, 곱하기, 나누기 등의 연산을 수행할 수 있습니다. + -, *, / 등과 같이 여러분이 일반 숫자에 대해 사용하는 연산자를 사용하면 됩니다.

이 떄, 이러한 더하기, 빼기, 곱하기, 나누기 등의 연산은 두 array 상의 동일한 위치의 성분끼리 이루어지게 됩니다. 그러므로, 당연히 두 array의 모양이 같아야 계산이 가능합니다.

하나의 array와 일반 숫자 간에 연산을 하는 것도 가능한데, 이 경우 해당 숫자와 array 내 모든 성분 간에 해당 연산이 이루어지게 됩니다.




© 2017. by freelife

Powered by freelife