넘파이란?
Numpy는 Numerical Python의 줄임말로, 파이썬에서 산술 계산을 위한 패키지이다.
과학 계산을 위한 대부분의 패키지는 Numpy의 배열 객체를 데이터 교환을 위한 공통 언어처럼 사용한다.
Numpy ndarray
Numpy의 N차원의 배열 객체이다.
형태가 파이썬의 리스트와 비슷하다고 생각할 수 있으나 기본적으로 메모리 공간을 차지하는 형태가 다르다.
리스트의 경우 하나의 리스트 안에 다른 타입(숫자, 문자 등)이 공존이 가능하지만
넘파이는 동일한 타입의 데이터만 들어갈 수 있다.
Numpy 와 List의 차이점
1. print 문 출력 형태
두 자료형의 차이는 출력을 해보면 간단하게 확인이 가능하다.
# L:List , A:Array
L = [1, 2, 3]
A = np.array([1, 2, 3])
동일한 원소를 넣고 두 가지 자료형을 만들고 출력한 경우 콤마(,)의 유무가 보여지게 된다.
[1, 2, 3]
[1 2 3]
그렇다고 넘파이가 무조건 콤마 형태로 나오지 않는 것은 아니다.
단순히 A 만을 출력한 경우엔
array([1, 2, 3])
라고 출력이 된다.
위의 차이점은 print 문을 사용한 경우 나타나는 형태라고 할 수 있다.
2. append 사용
List 자료형에서는 보통 append 를 사용하여 또 다른 원소배열을 넣기도 한다.
그러나 넘파이에서는 append 를 사용하면 에러가 나는 것을 볼 수 있다.
A = A.append(4)
print(A)
#출력
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/tmp/ipykernel_2482151/845514549.py in <module>
----> 1 A = A.append(4)
2 print(A)
AttributeError: 'numpy.ndarray' object has no attribute 'append'
만약 array에서 append를 사용하고자 한다면 다음 함수를 적용하면 된다.
A = np.append(A, 4)
print(A)
#출력
[1 2 3 4]
3. 연산방법의 차이
List 형에서 자료 내 원소를 추가하는 방법은 간단하게 덧붙이는 방법이다.
그러나 array형에서는 동일한 방법을 사용하여도 다른 결과를 보게 된다.
# 원소 추가 (L:List, A:Array)
L = L + [5]
A = A + np.array([5])
# 출력
L = [1, 2, 3, 4, 5]
A = [6 7 8 9]
이런 결과는 넘파이 연산에서의 브로드캐스팅의 결과이다.
자료 내 원소를 추가하는 것이 아니라 모든 원소 자체에 5를 추가한 결과를 뽑아낸다.
Numpy array 와 List의 연산과정의 차이점은 이것 뿐만이 아니다.
만약 모든 원소에 동일한 수를 곱하고자 할 때, 두 자료형 연산의 차이점 코드는 아래와 같다.
# List 내 모든 원소를 3배하여 새로운 List 생성
L = [1, 2, 3]
3L = []
for item in L:
3L.append(item*3)
print(3L)
# ndarray 내 모든 원소를 3배하여 새로운 ndarray 생성
A = np.array(L)
3A = A*3
print(3A)
'Python > Build setting' 카테고리의 다른 글
[Numpy]넘파이 배열 생성(zeros_like, ones_like, full_like, empty_like) (0) | 2022.08.24 |
---|---|
[Numpy]넘파이 배열 생성(zeros, ones, full, empty) (0) | 2022.08.24 |
[Numpy]넘파이 배열 (0) | 2022.08.24 |
CSV 파일 형식이란? (0) | 2022.08.10 |
파이썬과 아나콘다 설치하기 (0) | 2022.08.10 |
댓글