Numpy <1>
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] 이다. (아무 생각없이 잘 쓰고 있었던 것 같은데 새삼 혼돈이 온다...)