2014-03-01 1 views
2

십진 정밀도 100을 갖는 mpf 요소가 포함 된 배열이 numpy입니다. A의 numpy 내적을 자체적으로 가져 가려고 결정하면이 정밀도가 사라지나요?Python의 Numpy와 MpMath 사이의 상호 운용성

이 경우 정밀도를 유지할 수 있도록 numpy 배열을 mpmath 행렬로 변환 할 수있는 방법이 있습니까?

+2

문제가 발생할 수 있습니다. 'dots'은'fractions.Fraction' 인스턴스들로 가득 찬 배열로 테스트 할 때 잘 동작합니다. 그래서 numpy float으로 캐스팅하지 않고 적절한 mpmath 메소드를 호출 할 것입니다. 나는 그것을 시도하는 것이 좋습니다. – user2357112

+0

감사합니다 :) numpy 작업이 mpmath와 잘 작동하는 문서를 찾으려고했지만 불행히도 지금까지 행운이 없습니다. ( – Jing

답변

3

누빔 어레이는 객체, 특히 mpf 객체를 보유 할 수 있으며 dot과 같은 메소드는 이러한 객체의 덧셈/곱셈 방법을 사용할 수 있습니다. 예 :

import mpmath 
import numpy 
mpmath.mp.dps = 25  # higher precision for demonstration 
a = [mpmath.sin(mpmath.pi*n/3) for n in range(99)] 
b = numpy.array(a) 
b.dot(b) 

출력 비교 용 mpf('49.50000000000000000000000165')

,이 배열 요소 배정도로 전송할 경우 NumPy와로 변환 할 때 수레 일어나는 것이다 :

c = numpy.array(a, dtype=float) 
c.dot(c) 

출력 49.499999999999993. 따라서 mpmath가 제공하는 고정밀도는 첫 번째 버전에서 도트 메서드가 호출 될 때 유지됩니다.