2.9.3 NumPy와 SciPy

 

Remarks

이 글은 전문가를 위한 파이썬(Fluent Python)을 정리한 자료입니다.


2.9.3 NumPy와 SciPy

  1. 고정밀 성능 측정 타이머

    from time import perf_counter as pc
    t0 = pc();  floats /= 3; pc() - t0
    

2.9.4 덱 및 기타 큐

  1. 리스트에서 왼쪽에 삽입하거나 삭제하는 연산은 전체 리스트를 이동시켜야 하므로 비용이 크다. collections.deque 클래스는 큐의 양쪽에서 빠르게 삽입, 삭제할 수 있는 thread-safe 양방향 큐다.
  2. 그러나, 중간 항목을 삭제하는 연산은 그리 빠르지 않다.
from collections import deque

dq = deque(range(5), maxlen=5)  # [0, 1, 2, 3, 4]
dq.rotate(3)                    # [2, 3, 4, 0, 1]
dq.rotate(-4)                   # [1, 2, 3, 4, 0]
dq.appendleft(-1)               # [-1, 1, 2, 3, 4]
dq.extend([11, 22])             # [2, 3, 4, 11, 22]
dq.extendleft([10, 20])         # [20, 10, 2, 3, 4]
dq.popleft()                    # [10, 2, 3, 4]

읽을거리

  1. sorted(), list.sort()에 사용된 정렬 알고리즘은 팀 정렬(Timesort)로, 데이터의 정렬된 정도에 따라 삽입 정렬과 병합 정렬 사이를 전환하는 적응형 알고리즘이다. 실세계 데이터에는 정렬된 데이터 덩어리들이 들어 있는 경우가 많아 상당히 효율적이다.