python - 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]
我不知道发生了什么。欢迎任何帮助。
解决方案
这应该解决它。
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)
,这也解决了问题。
推荐阅读
- html - 垂直汉堡侧导航栏在屏幕右侧创建一个空白区域。仅在手机版中显示
- reactjs - 如何更改 url 而无需在反应路由器 dom 5 中添加另一级路径
- firebase - 在 null 上调用了方法“toRawHandle”,但我没有使用 FirebaseMessaging
- c - AZURE 云集成
- python - 条形图上的matplotlib datetime x轴重叠问题
- c++ - 输出将如何显示?
- c++ - 如何在类 inputFactory 中调用字符串解析函数
- android - 如何使用 Hilt 创建生命周期感知组件?
- sql - Azure Devops 数据仓库部署错误 SQL72031:此部署在执行过程中可能会遇到错误
- javascript - 如何从 HTML UI 发送自适应卡片(使用 store.dispatch):microsoft/BotFramework-WebChat