使用math.erf()为dtype('int64')分配意外值时未更新Numpy数组

时间:2014-10-31 14:27:07

标签: arrays math numpy int

我只是试图将math.erf()的输出写入一个numpy数组。 我所做的就是:

import numpy as np
import math
a=np.array([0,0,0])
a[0]=math.erf(5)

但是,永远不会更新a来保存math.erf()的输出值,它应该只是一个浮点数。 我做错了什么?

更新

通过a从列表创建a=np.asarray(a)时,它似乎有效。

1 个答案:

答案 0 :(得分:6)

它确实会更新,但它不会更改它们的数组类型,因此值似乎不会更改。注意

a=np.array([0,0,0])
a.dtype

返回

dtype('int64')

由于math.erf(5)< 1为整数,因此为零。

作为替代方案(有很多方法可以创建特定类型的数组)

a=np.array([0,0,0],dtype=float)
a[0]=math.erf(5)

你的期望。