2020-02-20 17:18:52

numpy 패키지는 python 패키지 중에서도 아주 유명한 패키지입니다. 아래 링크건 웹페이지에서는 꼭 알아야하는 python 패키지 10개를 소개하고 있는데 그 중 하나가 바로 numpy입니다. 보통 한글로는 넘파이라고 읽습니다. 

=> https://www.edureka.co/blog/python-libraries/

 

  • Tensorflow
  • Scikit-learn
  • Numpy
  • Keras
  • PyTorch
  • LightGBM
  • Eli5
  • Scipy
  • Theano
  • Pandas

 

또 다른 웹페이지(https://data36.com/python-libraries-packages-data-scientists/)에서는 가장 중요한 패키지로 5가지를 선정했습니다. 

 

  • Numpy
  • Pandas
  • Matplotlib
  • Scikit-learn
  • Scipy

 

넘파이는 행렬 연산을 위한 패키지라고 생각해도 좋습니다. 영상처리, 머신러닝, 통계처리 등은 결국 행렬을 다루는 것이기 때문에 넘파이 패키지는 매우 중요합니다. 이 페이지에는 제가 python으로 코딩을 하면서 유용했던 numpy 패키지의 함수 10개를 정리하려고 합니다. 

 

1. 배열 생성: numpy.array()

아래와 같이 1차원 배열을 생성할 수도 있고(line 1), 2차원 배열을 생성할 수도 있습니다(line 4). 그 이상도 가능합니다. 그리고 생성하면서 데이터타입을 정해줄 수도 있습니다(line 7). 

 

 

2. 0으로 채워진, 1로 채워진 배열 생성: numpy.zeros(), numpy.ones()

0으로 채워진 배열은 쓸 일이 많습니다. 0 배열을 만들어놓은 후에 원소들에 적절한 값을 채워넣죠. 

 

 

3. 배열 원소들 제곱근하기, 제곱하기: numpy.sqrt(), numpy.square()

 

 

배열 원소들의 제곱근을 구하고, 제곱을 구하는 것은 다음과 같은 방식으로도 가능합니다. python에서는 A의 n 제곱을 나타내기 위해 ** 연산자를 사용합니다. 제곱근의 경우 0.5승하는 것이므로 A ** 0.5로 표현 가능합니다.  

 

 

항상 코딩이라는 것이 단 한가지의 방법만 있는 것이 아니죠. ㅎㅎ 사용자의 개성이 반영될 수 있는 여지가 있는 것이 코딩의 매력이기도 합니다. 

 

4. 데이터 타입 변환: numpy.int64(), numpy.float64() 등

아래 line 3을 보시면 생성한 배열 A의 데이터타입이 float64입니다. float는 부동소수형입니다. line 4는 배열의 데이터타입을 int8로 바꿔주는 코드입니다. int는 정수형이기 때문에, 결과적으로 소수들이 날아가고 정수만 남았습니다.

 

 

5. 배열 전치: numpy.transpose()

전치(transpose)라는 것은 배열의 행을 열로, 열을 행으로 변환해주는 것을 의미합니다. 

 

 

numpy.transpose()를 이용하는 것 말고도 다음과 같은 방식으로도 전치가 가능합니다. 

 

 

6. 배열 원소의 평균, 분산, 표준편차: numpy.mean(), numpy.var(), numpy.std()

 

7. 배열 원소 반올림, 올림, 내림: numpy.around(), numpy.ceil(), numpy.floor()

numpy.around() 대신에 numpy.round()를 써도 됩니다. 

 

 

8. 배열 원소의 절대값: numpy.abs()

원소가 음수인 경우 양수로 바꿔줍니다. 양수인 경우에는 그대로 출력됩니다. 

 

 

9. 배열 원소의 부호: numpy.sign()

배열 원소가 음수인 경우에는 -1을, 양수인 경우에는 1을, 0인 경우에는 0을 출력해줍니다.

 

 

10. 두 배열 잇기: numpy.concatenate()

두 배열을 이어줘야할 때는 numpy.concatenate()를 쓸 수 있습니다. 행을 늘리는 방향으로 이어줄 수도 있고, 열을 늘리는 방향으로 이어줄 수도 있습니다. 

 

 

 

항상 질문과 지적은 환영입니다. 빠르게 답변드리고 있으니 댓글 남겨주세요.^^