我在从 float64 到 uint16 的数据类型转换时遇到问题。如果我有一个浮点数组并且我尝试使用
来转换它array_uint16 = array_float64.astype(np.uint16)
是否有一种“内置检查”已经将所有大于 (2^16-1) 的值转换为 uint16 支持的范围的最大值,或者是否会发生溢出问题? 谢谢你
您可以在转换前使用
numpy.clip()
:
import numpy as np
# Example array
array_float64 = np.array([-1, 0, 100000, 65535, 65536], dtype=np.float64)
# Clip values
necessary_type = np.uint16
min_value = np.iinfo(necessary_type).min
max_value = np.iinfo(necessary_type).max
array_clipped = np.clip(array_float64, 0, 65535)
# Convert to uint16
array_uint16 = array_clipped.astype(necessary_type)
array_uint16
这可确保高于 65535 的值设置为 65535,低于 0 的值设置为零