1
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