NaN 值如何以简单的 Numpy 文件格式表示?
How are NaN values represented in the simple Numpy file format?
我正在用 JVM 语言编写一个程序,该程序以 numpy 简单文件格式存储 Double[]
的数组,描述为 here。然后我使用
将这些读入 ndarray
np.readstring(str,dtype="float64")
撇开字节序不谈,这很好用,因为 Java 和 Numpy 使用相同的 IEEE 标准来存储双精度值。它似乎也可以毫无问题地与 int32
一起使用。我的问题是,1) 如何在 Java 端存储 NaN
值? 2) 更一般地说,NaN
s 在上面链接的 numpy 简单文件格式中是如何表示的?
documentation for java.lang.Double.NaN说的是
A constant holding a Not-a-Number (NaN) value of type double. It is equivalent to the value returned by Double.longBitsToDouble(0x7ff8000000000000L).
(那部分无耻地从this answer中抄袭)
直接回答您的问题:
- NaN 将像 Java 侧的任何其他双精度一样存储。
- 作为您 link 谈论以原始二进制形式对值进行编码的规范,我认为您可以像其他任何值一样将该值放入文件中。
我认为真正有趣的问题是 - 如果在 python 中将其加载到 numpy 中,numpy 将如何解释该值?
我相信 答案是它也会将其解释为 NaN,因为它符合与 Java 相同的 IEEE 浮点数规范。但是 - 我会先尝试一个小的测试示例来检查它。
我正在用 JVM 语言编写一个程序,该程序以 numpy 简单文件格式存储 Double[]
的数组,描述为 here。然后我使用
ndarray
np.readstring(str,dtype="float64")
撇开字节序不谈,这很好用,因为 Java 和 Numpy 使用相同的 IEEE 标准来存储双精度值。它似乎也可以毫无问题地与 int32
一起使用。我的问题是,1) 如何在 Java 端存储 NaN
值? 2) 更一般地说,NaN
s 在上面链接的 numpy 简单文件格式中是如何表示的?
documentation for java.lang.Double.NaN说的是
A constant holding a Not-a-Number (NaN) value of type double. It is equivalent to the value returned by Double.longBitsToDouble(0x7ff8000000000000L).
(那部分无耻地从this answer中抄袭)
直接回答您的问题:
- NaN 将像 Java 侧的任何其他双精度一样存储。
- 作为您 link 谈论以原始二进制形式对值进行编码的规范,我认为您可以像其他任何值一样将该值放入文件中。
我认为真正有趣的问题是 - 如果在 python 中将其加载到 numpy 中,numpy 将如何解释该值?
我相信 答案是它也会将其解释为 NaN,因为它符合与 Java 相同的 IEEE 浮点数规范。但是 - 我会先尝试一个小的测试示例来检查它。