2012-05-26 2 views
4

가능한 중복 : 예를 들어
Relationship between scipy and numpyNumPy와 SciPy의 기능이 다른 이유는 무엇입니까? 어느 것을 선호해야합니까?

는, NumPy와는 window functions을 가지고 bartlett, blackman, hamming, hanning, kaiser, SciPy는 these and several more을 가지고 있지만 그들은 동일한 출력을 생성하는 것 동안.

NumPy는 numpy.fft.fft2(a, s=None, axes=(-2, -1))입니다.

SciPy는 scipy.fftpack.fft2(x, shape=None, axes=(-2, -1), overwrite_x=0)입니다.

왜 중복이 있습니까? 이전 버전과의 호환성을 위해서? 그렇다면 왜 다른 장소에서 다르게 정의됩니까? 새로운 것을 쓸 때 어느 것이 더 좋아야합니까? SciPy FAQ에서

+5

http://stackoverflow.com/questions/6200910/relationship-between-scipy-and-numpy – NPE

+0

@aix : 이것은 numpy 함수가 scipy로 변환 된 것에 관한 것이 아닙니다. 그것은 둘 다 독립적으로 존재하는 물건에 관한 것이고, 나의 질문은 그 대답에 의해 응답되지 않습니다. – endolith

답변

16

: 등등, 기본 elementwise 기능을 재편, 분류, 색인 : 이상적인 세계에서는

는 NumPy와 배열 데이터 유형과 가장 기본적인 작업만을 포함하지 않을 것이다. 모든 숫자 코드는 SciPy에 있습니다. 그러나 NumPy의 중요한 목표 중 하나는 호환성이므로 NumPy는 선구자 중 하나가 지원하는 모든 기능을 유지하려고합니다. 따라서 NumPy는 더 많은 수의 선형 대수학 함수를 포함하고 있습니다.이 두 가지가 SciPy에 속합니다. 어떤 경우 든, SciPy는 다른 많은 수치 알고리즘뿐만 아니라 선형 대수 모듈의 완전한 기능을 갖춘 버전을 포함합니다. 파이썬으로 과학 계산을하고 있다면 NumPy와 SciPy를 모두 설치해야합니다. 대부분의 새로운 기능은 NumPy보다는 SciPy에 속합니다.

네, 복제본은 이전 버전과의 호환성을위한 것입니다. 일반적으로 같은 결과를줍니다. 그러나 FAQ에 나와 있듯이 새로운 기능은 대개 SciPy에 구현되지만 반드시 NumPy로 구현되는 것은 아닙니다. 여기에는 버그 수정이 포함됩니다. 예를 들어 numpy.linalg.eig가 복잡한 행렬에 대해 잘못된 고유 값을 반환하는 반면 scipy.linalg.eig가 올바른 행렬을 반환한다는 것을 발견했습니다.

일반적으로 FAQ에서 "이상적인"시나리오를 선호합니다. 기본 배열 조작에 NumPy를 사용하고 모든 선형 대수에 대해 SciPy를 사용합니다. 이 방법으로 나는 어떤 놀라움에 빠지지 않습니다.

관련 문제