1P by neo 5달전 | favorite | 댓글 2개

새로운 기능

  • 새로운 가변 길이 문자열 dtype, StringDType와 문자열 작업을 위한 numpy.strings 네임스페이스 추가.
  • 모든 numpy.fft 함수에서 float32longdouble 지원.
  • 메인 numpy 네임스페이스에서 배열 API 표준 지원.

성능 개선

  • 정렬 함수(sort, argsort, partition, argpartition)가 Intel x86-simd-sort와 Google Highway 라이브러리를 사용하여 가속화됨.
  • macOS Accelerate 지원 및 macOS >=14용 바이너리 휠 제공, 선형 대수 연산의 성능 크게 향상.
  • numpy.char 고정 길이 문자열 작업이 가속화됨.
  • 하드웨어별 커널을 확인하고 사용할 수 있는 새로운 추적 및 검사 API, opt_func_info 추가.

Python API 개선

  • 공용 API와 비공용 API의 명확한 분리, 새로운 모듈 구조.
  • 비추천 함수와 별칭 다수 제거, 학습과 사용이 더 쉬워짐.
  • 표준 dtype 이름과 새로운 isdtype 검사 함수 추가.

C API 개선

  • 사용자 정의 dtype을 생성하기 위한 새로운 공용 C API 추가.
  • 오래된 함수와 매크로 제거, 비공용 내부 숨김.
  • 새로운 초기화 함수: PyArray_ImportNumPyAPIPyUFunc_ImportUFuncAPI.

개선된 동작

  • NEP 50을 채택하여 타입 승격 동작 개선, 입력 배열의 데이터 값이 아닌 dtype에만 의존하게 됨.
  • Windows에서 기본 정수 타입이 int32에서 int64로 변경됨.
  • 최대 배열 차원 수가 32에서 64로 증가.

문서화

  • 참조 가이드 탐색이 크게 개선됨.
  • 소스에서 빌드하는 문서가 완전히 새로 작성됨.

Python API 제거 항목

  • np.geterrobj, np.seterrobj 및 관련 ufunc 키워드 인수 extobj= 제거.
  • np.cast 제거, np.asarray(arg, dtype=dtype)로 대체.
  • np.source 제거, inspect.getsource로 대체.
  • np.lookfor 제거.
  • numpy.who 제거, Spyder나 Jupyter Notebook 같은 IDE의 변수 탐색기 사용 권장.
  • 여러 비추천 함수와 별칭 제거.

GN⁺의 의견

  • 성능 개선: 새로운 정렬 알고리즘과 macOS Accelerate 지원으로 인해 데이터 처리 속도가 크게 향상될 것으로 기대됨.
  • API 정리: 비추천 함수와 별칭의 제거로 인해 NumPy 사용이 더 직관적이고 간결해짐.
  • 타입 승격: NEP 50을 채택하여 타입 승격 동작이 더 예측 가능해짐. 이는 혼합 dtype 연산에서의 예기치 않은 결과를 줄이는 데 도움이 될 것임.
  • 문서화 개선: 참조 가이드와 빌드 문서의 개선으로 인해 개발자들이 NumPy를 더 쉽게 이해하고 사용할 수 있게 됨.
  • 호환성 문제: 많은 API 변경 사항이 있으므로 기존 코드가 호환되지 않을 수 있음. 마이그레이션 가이드를 참고하여 코드를 업데이트하는 것이 필요함.

충돌하는 패키지들이 많겠네요..

Hacker News 의견
  • 복잡한 연산 조합 방법: 비요소별 연산을 구성하는 더 간단하고 기억하기 쉬운 방법이 필요함. 다양한 방법이 너무 많아 매번 다시 배워야 하는 어려움이 있음.

  • 윈도우 기본 정수형 변경: 윈도우에서 기본 정수형이 int32에서 int64로 변경됨. 이는 다른 플랫폼과 일치하게 되어 좋음.

  • Numpy 주요 업데이트: Numpy를 직접 자주 사용하지 않는 사용자에게는 큰 변화가 없을 수 있음. 주로 pandas와 scipy를 사용하며, 필요할 때만 Numpy 알고리즘을 사용함.

  • 업데이트 주기: 주요 업데이트가 있을 때마다 바로 업그레이드하지 않고, 안정적인 버전이 나올 때까지 기다리는 편임.

  • 버전 관리: 18년 만에 큰 변화가 있는 첫 주요 릴리스는 새로운 버전으로 포크하는 것이 더 나을 것 같음. pip install numpy2로 설치하고, 다른 라이브러리와의 호환성을 걱정하지 않도록 하는 것이 좋음.

  • 패키지 호환성 문제: 일부 패키지가 1.x 버전에 고정되지 않아 문제가 발생하고 있음. pip install numpy==1.*로 임시 해결 가능함.

  • 릴리스 노트 링크: Numpy 2.0.0 릴리스 노트 링크 제공. Numpy 2.0.0 릴리스 노트