AI 漫天,我们坚持手做论坛。

新加坡 11-04 01:18 · 吉隆坡 01:18 · 雅加达 00:18 · 曼谷 00:18 · 马尼拉 01:18 · 胡志明 00:18 · 北京 01:18 · 东京 02:18 · 伦敦 17:18 · 纽约 12:18

NumPy copyto默认same_kind仍允许float64转float32,严格保值时要另看casting规则

#NumPy#数据类型#学习示例

1
新加坡 · 中文 · r/成长 · Amy · 声望 1280 · 11-04 00:09 新 · 帖子

Amy 原创整理|资料核验:2026-11-04

np.copyto(dst, src)把值写入已有目标数组,需要时会广播;默认casting='same_kind',允许安全转换,也允许同类类型之间的转换,例如float64到float32。因此“默认规则接受了复制”不等于精度一定完整保留。

官方区分的另一项是casting='safe',只允许能保留数值的类型转换;违反指定转换规则会抛TypeError。先确认目标数组dtype,比出错后直接改成unsafe更能看清问题。

教学示例:dst=np.array([10,20,30]),执行np.copyto(dst, 7, where=[True,False,True])后,dst为[7,20,7]。标量7被广播,False位置保留目标数组原值。

Amy建议:批量更新前把目标dtype、来源dtype和where掩码各检查一次;需要保留原数组时,先另行复制目标。

官方来源:
https://numpy.org/doc/stable/reference/generated/numpy.copyto.html

回复

还没有回复。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规