2015-01-16 27 views
0

我正在用JVM語言編寫一個程序,該程序以here描述的numpy簡單文件格式存儲Double[]的數組。然後,我用如何用簡單的Numpy文件格式表示NaN值?

np.readstring(str,dtype="float64") 

字節序之外,這工作正常閱讀這些爲ndarray,Java和numpy的都使用相同的IEEE標準用於存儲雙重價值。它也似乎與int32一起工作沒有問題。我的問題是,1)如何在Java端存儲NaN值? 2)更一般地說,NaN如何以上面鏈接的numpy簡單文件格式表示?

+0

您是否嘗試編寫一個新的Double [] {Double.NaN}'? –

回答

0

documentation for java.lang.Double.NaN說,它是

的常量保持一個不一個數字(NaN)型雙的值。它等同於Double.longBitsToDouble(0x7ff8000000000000L)返回的值。

(該部分從this answer無恥地刮掉)

直接回答你的問題:

  1. NaN的將存儲就像在Java方面的任何其他雙。
  2. 正如你鏈接到的規範談論有關以原始二進制形式對值進行編碼的討論,我認爲你可以像其他任何文件一樣將該值放入文件中。

我認爲真正有趣的問題是 - numpy如果將它加載到Python中的numpy中,該如何解釋該值?

相信答案是它也將它解釋爲NaN,因爲它符合與Java相同的浮點數IEEE規範。但是 - 我會嘗試一個小的測試示例首先檢查它。

+0

這似乎適用於浮點數和整數。只需要記住,在Java測試中需要使用Int.isNaN或等價的(而不是使用(in)等於運算符) – Luciano

相關問題