Tôi nên sử dụng scipy.pi, numpy.pi hoặc math.pi?


137

Trong một dự án sử dụng scipy và NumPy, tôi nên sử dụng scipy.pi, numpy.pihoặc math.pi?


6
Không, thực tế là tất cả các mô-đun này cung cấp hằng số cho tôi biết rằng có một số lý do cho điều đó?
Douglas B. Staple

3
Đó là bởi vì bạn không luôn sử dụng tất cả chúng và bạn không muốn cài đặt và nhập mô-đun chỉ để lấy Pi.
Lev Levitsky

11
@LevLevitsky Tôi mới bắt đầu sử dụng python và tôi nhận thấy rằng có một sự khác biệt giữa math.bao và numpy.bao (numpy.bao có thể lấy một danh sách nhưng math.bao muốn nổi). Vì vậy, tôi đã không nghĩ rằng đó là một câu hỏi ngớ ngẩn ...
Douglas B. Staple

Câu trả lời:


197
>>> import math
>>> import numpy as np
>>> import scipy
>>> math.pi == np.pi == scipy.pi
True

Vì vậy, nó không thành vấn đề, tất cả chúng đều có cùng giá trị.

Lý do duy nhất cả ba mô-đun cung cấp một pigiá trị là vì vậy nếu bạn chỉ sử dụng một trong ba mô-đun, bạn có thể thuận tiện truy cập vào pi mà không phải nhập mô-đun khác. Họ không cung cấp các giá trị khác nhau cho pi.


15
Tất cả những thứ khác đều bằng nhau, tôi sẽ sử dụng math.piđơn giản vì nó nằm trong thư viện chuẩn nếu mô-đun không phụ thuộc numpyhoặc scipykhác - Nhưng như bạn nói, hãy sử dụng pi trong bất kỳ mô-đun nào bạn đang nhập để bắt đầu vì chúng Tất cả cùng một giá trị.
mgilson

3
Nếu bạn đã sử dụng numpy np.pi, nhưng không nên nhập NumPy chỉ pikhi nó vào math.
asmeker

42

Tất nhiên, một điều cần lưu ý là không phải tất cả các thư viện sẽ sử dụng cùng một nghĩa cho pi, vì vậy sẽ không bao giờ đau đớn khi biết những gì bạn đang sử dụng. Ví dụ, thư viện toán học tượng trưng Biểu diễn pi của Sympy không giống như toán học và numpy:

import math
import numpy
import scipy
import sympy

print(math.pi == numpy.pi)
> True
print(math.pi == scipy.pi)
> True
print(math.pi == sympy.pi)
> False

9
sympy Pi không được lưu dưới dạng hằng / float, đó là một đối tượng chứa hằng số
Naib

22
sympy's chính xác là pi, đại diện một cách tượng trưng, ​​để làm toán biểu tượng. những cái khác là xấp xỉ dấu phẩy động để làm toán dấu phẩy động.
endolith
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.