Haruskah saya menggunakan scipy.pi, numpy.pi, atau math.pi?

139

Dalam sebuah proyek menggunakan SciPy dan NumPy, harus saya gunakan scipy.pi, numpy.piatau math.pi?

Douglas B. Staple
sumber
6
Tidak, fakta bahwa semua modul ini menyediakan konstanta memberi tahu saya bahwa ada alasan untuk itu?
Douglas B. Staple
3
Itu karena Anda tidak selalu menggunakan semuanya, dan Anda tidak ingin menginstal dan mengimpor modul hanya untuk mendapatkan Pi.
Lev Levitsky
11
@LevLevitsky Saya baru saja mulai menggunakan python dan saya perhatikan bahwa ada perbedaan antara math.exp dan numpy.exp (numpy.exp dapat mengambil daftar tetapi math.exp menginginkan float). Jadi saya tidak berpikir itu pertanyaan bodoh ...
Douglas B. Staple

Jawaban:

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

Jadi tidak masalah, semuanya memiliki nilai yang sama.

Satu-satunya alasan ketiga modul memberikan pinilai adalah jika Anda hanya menggunakan salah satu dari tiga modul, Anda dapat dengan mudah mengakses pi tanpa harus mengimpor modul lain. Mereka tidak memberikan nilai yang berbeda untuk pi.

BrenBarn
sumber
15
Semua hal lain dianggap sama, saya akan menggunakan math.pihanya karena berada di pustaka standar jika modul tidak bergantung numpyatau scipysebaliknya - Tapi seperti yang Anda katakan, gunakan pi di modul mana pun yang Anda impor untuk memulai karena mereka semua nilai yang sama.
mgilson
4
Jika Anda sudah menggunakan penggunaan numpy np.pi, tetapi tidak masuk akal untuk mengimpor NumPy hanya pisaat sudah masuk math.
asmeurer
45

Satu hal yang perlu diperhatikan adalah tidak semua library akan menggunakan arti yang sama untuk pi, tentunya, jadi tidak ada salahnya untuk mengetahui apa yang Anda gunakan. Misalnya, pustaka matematika simbolis representasi Sympy tentang pi tidak sama dengan math dan 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
jbay
sumber
9
sympy Pi tidak disimpan sebagai konstanta / float, ini adalah objek yang berisi konstanta
Naib
22
sympy sama persis dengan pi, diwakili secara simbolis, untuk mengerjakan matematika simbolis. yang lainnya adalah pendekatan floating point untuk melakukan matematika floating point.
endolit