티스토리 뷰

Programming/Data

Numpy <1>

prograsshopper_ 2019. 1. 3. 03:04

Numpy

Numeric Python

Numpy는 리스트로 다룰수 없는 다차원 배열이나 행렬등을 손쉽게 처리할 수 있도록 해주는 라이브러리로, 선형대수적인 연산을 할때 유용하게 사용되는 패키지다.


특징

- Numpy의 array는 같은 타입의 데이터만 가질 수 있다(type coercion)

- 일반적인 연산들은 파이썬 리스트와 Numpy array에서 다르게 동작한다. Numpy의 array는 일종의 벡터로 생각하는 편이 좋은데 예를 들어 리스트 간의 합은 리스트의 확장이 결과가 되지만, np.array에서는 각 요소의 값이 더해진 것이 그 결과가 된다. 또한 벡터의 내적이나 벡터의 길이 등을 구하는 연산도 제공한다.



설치방법

- pip3 install numpy

- 보통 임포트할땐 import numpy as np 로 많이 쓰는 것 같다.



예시

키의 배열과 무게의 배열이 있을때 이를 통해서 bmi를 추출해내고 싶어한다고 하자.

(일반적인 파이썬이라면 무게배열/키의배열 ** 2 의 연산을 허용하지 않는다. 파이썬에서 리스트와 인트의 곱셈은 타입이 맞지 않아 허용되지 않는 연산이기 때문이다.)

하지만, Numpy array를 사용해 배열을 만들고 똑같은 연산을 한다면 bmi의 배열이 만들어진다.



예제

height = [1.65, 1.74, 1.89, 1.57]

weight = [56, 60, 75, 54]


weight / height ** 2

--> TypeError : list 와 int를 계산할 수 없다









단점

  • numpy array는 파이썬 리스트와 달리 다양한 유형의 데이터를 저장할 수 없다

  • 각 연산들이 파이썬 리스트에서랑 다르게 동작해서 혼란이 있을 수 있다.


그래도 subset은 똑같이 동작함 : subset : 리스트의 인덱스로 요소를 추출해내는 것



2차원 numpy 배열

np,array(l (ist of list) ) 의 형태로 생성할 수 있다.

attribute

  • shape: 총 몇행몇열인지를 보여줌







여기에서 : 는 slice를 의미하는데 모든 row를 포함한다는 뜻이다.

행렬할때 row 와 column 위치를 조심하자. array[row][column] 이다. (아무 생각없이 잘 쓰고 있었던 것 같은데 새삼 혼돈이 온다...)







반응형

'Programming > Data' 카테고리의 다른 글

PySpark : 2. Spark Dataframe Basics 1, 2  (0) 2024.02.01
PySpark : 1. Hadoop, Mapreduce, Spark  (0) 2024.01.28
Kaggle - Intro to Machine Learning  (0) 2020.02.24
Datacamp SQL Fundamentals <1>  (0) 2019.09.24
댓글