- numpy는 파이썬으로 진행되는 모든 데이터 분석과 인공지능 학습에 있어 필수적으로 이해
- numpy는 Numerical Python의 약자로 일반적으로 과학계산에서 많이 사용하는 선형대수의 계산식을 파이썬으로 구현할 수 있도록 도와주는 라이브러리로, 기존 가장 대중적으로 쓰이던 도구는
MATLAB
인데 MATLAB의 역할을 파이썬의 도구로 생각하면 좋음- numpy는 numpy 자체로도 많이 사용되지만 이후에 사용되는 SciPy나 Pandas의 base 객체로도 사용되며 numpy에서 사용되는 다양한 코드 표현법을 그대로 pytorch와 tensorflow에 사용하는 경우가 많아 numpy의 활용법은 반드시 알아둘 필요가 있음
- 리스트 형태로 표현
- 노름, 닷 프로덕트 등을 리스트로만 하면 전부 구현을 해야하는데 시간이 오래걸림
→ 누군가 구현해놓음 (파이썬 장점)
- Numerical python
- 파이썬의 고성능 과학 계산용 패키지
- Matrix와 Vector 같은 Array 연산의 사실상의 표준
- 한글로 넘파이로 주로 통칭 (넘피, 늄파이)
- 일반 리스트에 비해 빠르고, 메모리가 효율적
- 반복문 없이 데이터 배열에 대한 처리를 지원
- 선형대수와 관련된 다양한 기능 제공
- C, C++ 포트란 등의 언어와 통합가능
- 반복문 없이 데이터 배열에 대한 처리를 지원하는 부분이 중요!
numpy, pandas는 while 루프 for 루프를 쓰지 않고 처리를 함!
- 먼저 리스트에 시퀀스형 자료[1, 4, 5, 8]를 넣어주고, d type(float)을 열어주면 numpy array를 열어줌 (= 리스트랑 거의 같은 개념이지만)
- 생성된 배열을 ndarray 객체라고 함
- numpy는
하나의 데이터 타입
만으로 배열을 넣을 수 있음- 리스트는 여러가지 데이터 타입으로 들어갔지만 [1, 0.5, 0.5] 등 넘파이 어레이는 1가지 데이터 타입만 지원함!
- 64비트
shift+tab
을 누르면 array 함수 구성이 어떻게 되는지 보여주는데 선언해주는 것이 좋은 습관!
- 왼측 numpy array는 데이터가 자례대로 메모리에 할당이 돼 붙어있어, 장점으로 메모리 접근성이 좋고, 연산이 좋아짐
- 우측 파이썬 리스트는 0~10이 있다면, static한 공간 어딘가에 있음 (주소값을 리스트에 차례대로 저장) → 변환이 쉬움
- 메모리를 사용하는 것에 큰 특징이 있음 (예시 ▼)
shape
: dimension 구성dtype
: 데이터 타입
float64
= 데이터 하나가 8 bite
shape
: 2멘션 어레이 → 매트릭스 → 선형대수의 랭크 → 3 by 3의 매트릭스 → (3, 3)과 같이 튜플로 출력tensor
: 선형대수에서 데이터 값을 표현하는 기법
- 벡터를 표현할 때 옆으로 했는데, 밑으로 해도 됨
하지만 옆으로 표현했을 때 첫번째 그림은 4라는 값이 칼럼의 개수
- shape : 3 by 4
- 지금의 그림은 하나의 랭크가 증가하며 메트릭스가 되면 4가 밀리게 되고 raw가 증가해서 3이 됨
- 3 tensor가 되면 한 칸씩 또 밀리게 됨
ndim
: 디멘션이 몇 차원? 랭크의 개수- eliment의 개수는 4 x 3 x 4 = 48
- dytype = int 정수로써 1가지 데이터 타입만 선언한 것
- C 데이터 타입과 거의 같다.
- integer로 2^63승까지 표현 가능
- 파라미터가 억단위이면 매우 커짐
- 일반적으로는 float 64를 주로 사용
reshape
: 모양을 바꾸는 것이지만 사이즈의 개수 (데이터 개수)는 변하지 않음
-1
: 뒤에가 지정되고 앞을 지정하지 않더라도 알아서 조정해줄 때 -1을 넣어줌 (바꿔도 됨)이해 안 되면 공부!!
text_matrix
자체는 아직할당
이 일어나지 않았기 때문에, 바뀌지 않았고 결과만 출력된 것임
- reshape의 하나의 기능을 떼서 가져온 것으로, 다차원 어레이를 1차원으로
펴주는 것
- 0,0에 10을 할당한 모습
- 1,2에 5를 할당한 모습
- 행과 열을 나눠 슬라이싱 가능
a[:,2:] = 3,4,5,6,9,10
a[1,1:3] = 7,8
a[1:3]
- 진한 검은 테두리 부분
- 예시
빨간색이 출력값