我试图找到一种使用特定缩放函数将 2 字节 (-32K -> +32K) numpy int 数组缩放为 8 位 (0 -> 255) 的有效方法。有效的非常低效的方法是(其中 minVal 和 maxVal 是原始 2 字节 numpy 数组中的最小值和最大值,原始中的 paddingVal 将设置为 0):
...
pixel_array = np.zeros( length, dtype=np.int16)
byte_array = np.zeros( length, dtype=np.uint8)
....
i = 0
for val in np.nditer(pixel_array):
value = 0.0
if val == paddingVal:
byte_array[i] = 0
else:
value = 255.0 * ( val - minVal ) / (maxVal - minVal - 1.0)
byte_array[i] = (round(value))
i += 1
我无法弄清楚如何避免循环并仍然执行 if... 并应用缩放功能。
谢谢