首页 > 解决方案 > 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])
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]

我不知道发生了什么。欢迎任何帮助。

标签: pythonarraysnumpy

解决方案


这应该解决它。

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 时,因此当您填充它时,它会被四舍五入。只需将数据类型设置为浮动,问题就会消失。

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


推荐阅读