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

Dsc*_*oni 0 arrays math int numpy

我只是math.erf()想把输出写成一个numpy数组.我所做的只是:

import numpy as np
import math
a=np.array([0,0,0])
a[0]=math.erf(5)
Run Code Online (Sandbox Code Playgroud)

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

更新

a通过从列表中创建a=np.asarray(a),它似乎工作.

Cra*_*opi 6

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

a=np.array([0,0,0])
a.dtype
Run Code Online (Sandbox Code Playgroud)

返回

dtype('int64')
Run Code Online (Sandbox Code Playgroud)

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

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

a=np.array([0,0,0],dtype=float)
a[0]=math.erf(5)
Run Code Online (Sandbox Code Playgroud)

你的期望吗?