将 float64 数组转换为 uint16 (Python)

问题描述 投票:0回答:1

我在从 float64 到 uint16 的数据类型转换时遇到问题。如果我有一个浮点数组并且我尝试使用

来转换它
array_uint16 = array_float64.astype(np.uint16)

是否有一种“内置检查”已经将所有大于 (2^16-1) 的值转换为 uint16 支持的范围的最大值,或者是否会发生溢出问题? 谢谢你

python overflow data-conversion uint16
1个回答
0
投票

您可以在转换前使用

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 的值设置为零

这是一个文档,这是一个相关问题

© www.soinside.com 2019 - 2024. All rights reserved.