Python Numpy:数组上函数的赋值和求值

Python Numpy:数组上函数的赋值和求值,python,arrays,numpy,Python,Arrays,Numpy,我对python非常陌生。我需要用值填充numpy数组。然而,我无法理解以下行为: import numpy as np bla = np.array([1,2,3,4]) fTilde = np.full(4,1) for i in range(4): fTilde[i] = bla[i] print(fTilde) 我得到了预期的结果 [1,2,3,4] 如果我这样做 import numpy as np bla = np.array([1,2,3,4]) bla

我对python非常陌生。我需要用值填充numpy数组。然而,我无法理解以下行为:

import numpy as np
bla    = np.array([1,2,3,4])
fTilde = np.full(4,1)

for i in range(4):
    fTilde[i] = bla[i]

print(fTilde)
我得到了预期的结果

[1,2,3,4]
如果我这样做

import numpy as np
bla    = np.array([1,2,3,4])
bla2   = np.cos(bla)
fTilde = np.full(4,1)

print(bla2)

for i in range(4):
    fTilde[i] = bla2[i]

print(fTilde)
我得到了令人惊讶的结果:

[ 0.54030231 -0.41614684 -0.9899925  -0.65364362]
[0 0 0 0]
终于

import numpy as np
bla    = np.array([1,2,3,4])
bla2   = np.cos(bla)+1
fTilde = np.full(4,1)

print(bla2)

for i in range(4):
    fTilde[i] = bla2[i]

print(fTilde)
我得到了更出乎意料的结果

[1.54030231 0.58385316 0.0100075  0.34635638]
[1 0 0 0]
我不知道发生了什么事。欢迎任何帮助。

这应该可以解决它

import numpy as np
bla    = np.array([1,2,3,4])
bla2   = np.cos(bla)
fTilde = np.full(4,1, dtype=np.float32)

print(bla2)

for i in range(4):
    fTilde[i] = bla2[i]

print(fTilde)
问题是,当您执行
fTilde=np.full(4,1)
时,所创建的数据类型默认为int,因此当您填充它时,它会被舍入。只要将数据类型设置为float,问题就会消失

或者,您也可以只做
np.full(4,1.0)
,这也解决了问题。

这应该可以解决问题

import numpy as np
bla    = np.array([1,2,3,4])
bla2   = np.cos(bla)
fTilde = np.full(4,1, dtype=np.float32)

print(bla2)

for i in range(4):
    fTilde[i] = bla2[i]

print(fTilde)
问题是,当您执行
fTilde=np.full(4,1)
时,所创建的数据类型默认为int,因此当您填充它时,它会被舍入。只要将数据类型设置为float,问题就会消失

或者,您也可以只做
np.full(4,1.0)
,这也解决了这个问题