You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将scipy读取的uint16类型二维ndarray转换为int16?

将uint16类型ndarray转换为int16的快速方法

根据你的需求,有两种常见的快速转换方式,取决于你对数值范围的处理需求:

1. 直接类型转换(忽略溢出)

如果你的图像数据本身的数值范围在 0-32767 内(未超出int16的正数上限),可以直接用numpy的astype()方法强制转换类型:

import numpy as np

# 假设image是读取到的uint16类型ndarray
image_int16 = image.astype(np.int16)

注意:如果原数据中有大于32767的数值(比如32768),转换后会因为二进制补码规则变成负数(32768转成-32768,65535转成-1),这是无符号转有符号的默认溢出行为。

2. 数值映射(适配int16全范围)

如果需要将uint16的完整数值范围(0-65535)映射到int16的有效范围(-32768到32767),可以先做数值偏移再转换:

import numpy as np

# 先减去32768,再转类型
image_int16 = (image - 32768).astype(np.int16)

这种方式会把原图像的0映射为-32768,65535映射为32767,完整保留原数据的动态范围,适合需要后续处理全范围数据的场景。

两种方法都是numpy原生的矢量操作,处理速度极快,完全适配二维TIFF图像的规模。

内容的提问来源于stack exchange,提问作者vashista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 17:18:25