list
리스트로 합과 평균을 만들 때
test = [15, 20, 25]
testTotal = sum(test)
testAvg = sum(test) / len(test)
testAvg
20.0
위와 같은 형식을 따른다.
그리고 만약 여기서 30을 추가하려면, append 메소드를 사용하면 된다.
test.append(30)
그런데 만약, 여기서 test의 요소 하나하나를 5씩 더하려고 하면 어떻게 해야 될까?
test + 5
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-184-8a025d832785> in <module>()
----> 1 test + 5
TypeError: can only concatenate list (not "int") to list
단순히 test에 +5를 더하면 오류가 난다.
ndarray
만약 넘파이 어레이라면 어떻게 될까?
test = np.array((15, 20, 25, 30))
test
array([15, 20, 25, 30])
위는 넘파이 어레이를 만드는 형식이다.
test + 5
array([20, 25 30, 35])
하지만 어레이는 리스트와 다르게 원본 자체는 유지가 된다. 이러한 특성은 데이터 관련 패키지에 유용하게 사용된다.
test
array([15, 20, 25, 30])
또한 넘파이 어레이는 내부에서 C로 구성되어 있으므로, 연산속도가 매우 빠르다는 장점이 있다.
이처럼 넘파이 어레이는 배열이나 행렬 계산에 용이하게 쓰이고, 인공 신경망, 비정형 데이터 처리에서도 요긴하게 쓰이고 있다.
ndarray 와 list 자료 저장 구조
파이썬 list
- 파이썬 리스트는 포인터의 배열로 객체가 메모리 여기저기 흩어져 있음
- 객체가 메모리 여기저기 흩어져 있음
- 그러므로 캐시 활용이 어려움
Numpy ndarray
- ndarray는 타입을 명시하여 원소의 배열로 데이터를 유지한다.
- 다차원 데이터도 연속된 메모리 공간이 할당됨
- 많은 연산이 dimension가 strides를 잘 활용하면 효율적으로 가능하다.
'플레이데이터 빅데이터 부트캠프 12기 > Python' 카테고리의 다른 글
[플레이데이터 빅데이터 부트캠프]Python Pandas(1) (0) | 2022.07.21 |
---|---|
[플레이데이터 빅데이터 부트캠프]Python 3차원 배열 (0) | 2022.07.20 |
[플레이데이터 빅데이터 부트캠프]Python Enumerate & Zip (0) | 2022.07.17 |
[플레이데이터 빅데이터 부트캠프]Python filter함수 & reduce 함수 (0) | 2022.07.17 |
[플레이데이터 빅데이터 부트캠프]Python 익명함수 vs map함수 (0) | 2022.07.17 |