真奇怪的numpy数组浮点行为

时间:2014-02-21 09:59:06

标签: python arrays numpy floating-point

我第一次使用numpy并且遇到了浮点数组的一些非常奇怪的问题。

这是非常基本的,我可能会遗漏一些非常明显的东西 - 谁能告诉我这是什么问题?

这两行代码

arr1 = numpy.ndarray([1.0, 2.0])
print "arr1: ", arr1

产生这个输出:

arr1:  [[  1.49166815e-154  -1.32750723e-315]]

那是......不对。我做错了什么?

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

您应该使用numpy.array创建一个不是numpy.ndarray的数组。 numpy.ndarray是一个低级接口,在大多数情况下numpy.array应该用于创建数组。

In [5]: arr1 = numpy.array([1.0, 2.0])                                                            

In [6]: arr1
Out[6]: array([ 1.,  2.])

numpy.ndarray的签名:

ndarray(shape, dtype=float, buffer=None, offset=0, strides=None, order=None)         

所以,第一个参数是shape而不是数组。所以,numpy用一些随机数据填充你的数组。

来自numpy.ndarray的{​​{3}}:

  

应使用arrayzerosempty构建数组。

答案 1 :(得分:2)

您指定的参数是形状。要填充数据,您需要指定缓冲区参数。

np.ndarray(shape=(1,2), buffer=np.array([1,2]), dtype=float)