numpy ndarray未初始化的值有趣

2024-07-08 11:08:48 发布

您现在位置:Python中文网/ 问答频道 /正文

当我创造了一个新纪元时

c = np.ndarray((4, 5))

我得到:

^{pr2}$

这对我来说很有趣,因为所有的值要么是超大的正的,要么是接近于零的,有时候我可以在那里得到NaN。在

背后的机制是什么?在

它是否与sys.float_info有关,即sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)?在

愿意看你的意见。在

更新

我看到它在内存空间中是垃圾,但是是什么决定了它们被解释成这些数字?或者说,python如何表示浮点数?在

更新时更新

我知道浮点数是如何工作的,但为什么这些指数是以特定的模式?在


Tags: infonpsysnanfloatminmax机制
2条回答

根据documentation,如果不使用buffer参数调用ndarray,那么它填充的值是随机的。他们建议使用arrayzeros或{}来创建一个新数组,而不是使用低级的ndarray。在

Numpy根据数组的类型为其分配所需的内存(np.浮动默认情况下)。如果没有初始化,您看到的结果是已分配内存中垃圾的转换。并非所有可能的字节组合都可以转换为浮点,因此NaN,即Not a Number。在

更新

当您询问浮点表示法时,请阅读wikiIEEE 754 standard。在

默认情况下,np.float64 bit

>>> np.finfo(np.float)
finfo(resolution=1e-15, min=-1.7976931348623157e+308, max=1.7976931348623157e+308, dtype=float64)

在64b操作系统上可以有[float128]:(http://en.wikipedia.org/wiki/Quadruple_precision_floating-point_format

^{pr2}$

相关问题 更多 >

    热门问题