Apa yang Anda miliki akan berfungsi jika Anda menghilangkan tanda kurung siku di sekitar ", 2" dalam math.log()panggilan. Apakah kamu sudah mencobanya
martineau
5
perhitungan entropi yang bagus
Muhammad Alkarouri
math.log (nilai, basis)
Valentin Heinitz
Jawaban:
230
Senang mengetahui itu
tetapi juga ketahuilah bahwa
math.logmengambil argumen kedua opsional yang memungkinkan Anda menentukan basis:
In[22]:import math
In[23]: math.log?Type: builtin_function_or_method
BaseClass:<type 'builtin_function_or_method'>StringForm:<built-in function log>Namespace:InteractiveDocstring:
log(x[, base])-> the logarithm of x to the given base.If the base not specified, returns the natural logarithm (base e) of x.In[25]: math.log(8,2)Out[25]:3.0
Python frexp () memanggil fungsi C frexp () yang hanya mengambil dan mengubah eksponennya.
Python frexp () mengembalikan tupel (mantissa, eksponen). Jadi [1]dapatkan bagian eksponennya.
Untuk pangkat integral 2 eksponennya satu lebih dari yang Anda harapkan. Misalnya 32 disimpan sebagai 0.5x2⁶. Ini menjelaskan hal di - 1atas. Juga berfungsi untuk 1/32 yang disimpan sebagai 0,5x2⁻⁴.
Lantai menuju tak terhingga negatif, jadi log₂31 adalah 4 bukan 5. log₂ (1/17) adalah -5 bukan -4.
Menarik. Jadi Anda mengurangkan 1 di sana karena mantissa berada dalam kisaran [0,5, 1,0)? Saya akan memberikan yang ini beberapa suara positif lagi jika saya bisa.
LarsH
1
Tepat sekali @LarsH. 32 disimpan sebagai 0,5x2⁶ jadi jika Anda ingin log₂32 = 5 Anda perlu mengurangi 1 . Juga berlaku untuk 1/32 yang disimpan sebagai 0,5x2⁻⁴.
Bob Stein
16
Jika Anda menggunakan python 3.4 atau lebih tinggi maka itu sudah memiliki fungsi built-in untuk menghitung log2 (x)
import math
'finds log base2 of x'
answer = math.log2(x)
Jika Anda menggunakan python versi lama maka Anda dapat melakukan seperti ini
import math
'finds log base2 of x'
answer = math.log(x)/math.log(2)
In[1]:import numpy as np
In[2]: np.log2?Type: function
BaseClass:<type 'function'>StringForm:<function log2 at 0x03049030>Namespace:InteractiveFile: c:\python26\lib\site-packages\numpy\lib\ufunclike.py
Definition: np.log2(x, y=None)Docstring:Return the base 2 logarithm of the input array, element-wise.Parameters----------
x : array_like
Input array.
y : array_like
Optional output array with the same shape as`x`.Returns-------
y : ndarray
The logarithm to the base 2 of `x` element-wise.NaNs are returned where `x`is negative.SeeAlso--------
log, log1p, log10
Examples-------->>> np.log2([-1,2,4])
array([NaN,1.,2.])In[3]: np.log2(8)Out[3]:3.0
def lg(x, tol=1e-13):
res =0.0# Integer partwhile x<1:
res -=1
x *=2while x>=2:
res +=1
x /=2# Fractional part
fp =1.0while fp>=tol:
fp /=2
x *= x
if x >=2:
x /=2
res += fp
return res
math.log()
panggilan. Apakah kamu sudah mencobanyaJawaban:
Senang mengetahui itu
tetapi juga ketahuilah bahwa
math.log
mengambil argumen kedua opsional yang memungkinkan Anda menentukan basis:sumber
base
argumen ditambahkan dalam versi 2.3, btw.?
) adalah introspeksi objek dinamis .float → float
math.log2(x)
float → int
math.frexp(x)
Jika yang Anda butuhkan hanyalah bagian integer dari basis log 2 dari bilangan floating point, mengekstrak eksponen cukup efisien:
Python frexp () memanggil fungsi C frexp () yang hanya mengambil dan mengubah eksponennya.
Python frexp () mengembalikan tupel (mantissa, eksponen). Jadi
[1]
dapatkan bagian eksponennya.Untuk pangkat integral 2 eksponennya satu lebih dari yang Anda harapkan. Misalnya 32 disimpan sebagai 0.5x2⁶. Ini menjelaskan hal di
- 1
atas. Juga berfungsi untuk 1/32 yang disimpan sebagai 0,5x2⁻⁴.Lantai menuju tak terhingga negatif, jadi log₂31 adalah 4 bukan 5. log₂ (1/17) adalah -5 bukan -4.
int → int
x.bit_length()
Jika masukan dan keluaran adalah bilangan bulat, metode bilangan bulat asli ini bisa sangat efisien:
- 1
karena 2ⁿ membutuhkan n + 1 bit. Bekerja untuk bilangan bulat yang sangat besar, mis2**10000
.Lantai menuju tak terhingga negatif, jadi log₂31 adalah 4 bukan 5. log₂ (1/17) adalah -5 bukan -4.
sumber
Jika Anda menggunakan python 3.4 atau lebih tinggi maka itu sudah memiliki fungsi built-in untuk menghitung log2 (x)
Jika Anda menggunakan python versi lama maka Anda dapat melakukan seperti ini
sumber
Menggunakan numpy:
sumber
http://en.wikipedia.org/wiki/Binary_logarithm
sumber
sumber
math.log
fungsi tersebut. Lihat jawaban unutbu.Coba ini ,
sumber
logbase2 (x) = log (x) / log (2)
sumber
Di python 3 atau lebih, kelas matematika memiliki fungsi berikut
atau Anda biasanya dapat menggunakan
math.log(x, base)
untuk basis apa pun yang Anda inginkan.sumber
log_base_2 (x) = log (x) / log (2)
sumber
Jangan lupa bahwa log [basis A] x = log [basis B] x / log [basis B] A .
Jadi jika Anda hanya memiliki
log
(untuk log natural) danlog10
(untuk log basis-10), Anda dapat menggunakansumber