Neden alıyorum şu:numpy.isnan (value) değeri == numpy.nan ile aynı değil?
>>> v
nan
>>> type(v)
<type 'numpy.float64'>
>>> v == np.nan
False
>>> np.isnan(v)
True
İki eşdeğer olmalıdır sanırdım
?
Neden alıyorum şu:numpy.isnan (value) değeri == numpy.nan ile aynı değil?
>>> v
nan
>>> type(v)
<type 'numpy.float64'>
>>> v == np.nan
False
>>> np.isnan(v)
True
İki eşdeğer olmalıdır sanırdım
?
nan != nan
. Bu, nan
'daki eşitlik karşılaştırmalarının nasıl tanımlandığıdır. Bu sonucun, sayısal algoritmalar için alternatiften daha uygun olduğuna karar verildi. Bu, özellikle neden isnan
var.
Teşekkürler! Bu hata ayıklanırken bir süreliğine beni çok şaşırttı :) –
Bu arada, büyük olasılıkla IEEE 754'ten kaynaklanıyor: * Karşılıklı dört ilişki mümkün: az, eşit, büyük ve sırasız. Son durum, en az bir işlenenin NaN olduğunda ortaya çıkar. Her bir NaN, kendisi de dahil olmak üzere her şeyle sırasız bir şekilde karşılaştıracaktır. * Düzenleme: Daha fazla ayrıntıya giden bir bağlantıya bir yorum ile ~ 2 saat tarafından dövüldüğüm anlaşılıyor - Joe Kington'un bu soruyu yorumlayın. – jedwards
Ayrıca bkz: http://stackoverflow.com/a/1573715/325565 (doğrudan python ile ilgili değil, neden böyle olduğunu tanımlayan IEEE-754 komitesinin bir üyesi tarafından yazılmış) –
Sanırım tanımsız tanım olarak tanımlandığı için, tanımsız iki değerin özdeş olarak karşılaştırılamayacağı anlamlıdır. Nan alırken sadece biraz kafa karıştırıcı! = Nan hatası ilk kez! –
ile ilgili: http://stackoverflow.com/q/13003202/674039 – wim