HQQQQ1 2020-04-16 20:13 采纳率: 0%
浏览 1280

怎么把int16组转换成int8数组#python#。

在处理灰度图片时,读取了一个int16的数组,想把该数组转换成8位数组。
直接用np.int8() 是抛弃了二进制的前8位,与计算结果不符。
但是对数组做运算时出现了下面代码的问题

import numpy as np
a = np.array([32767,32765,1044,254],'int16')
print('方法1:')
b = (a*255)//32767
print(b)
print(b.dtype)

print('方法2:')
for i in range(len(a)):
    a[i] = a[i]*255//32767
print(a)

上面代码输出结果:

方法1:
[ 0  0  0 -1]
int16
方法2:
[255 254   8   1]

方法二的输出是正确的,但是图片数据很大,用for循环的方法太慢了,请问各位有我哪里出了错误吗?除了循环还有其他方法吗?

  • 写回答

1条回答 默认 最新

  • 吃鸡王者 2020-04-17 15:35
    关注
    import numpy as np
    a = np.array([32767,32765,1044,254],'int16')
    print('方法1:')
    b = ((a*255.0)//32767).astype(np.uint8)
    print(b)
    print(b.dtype)
    
    

    这样就可以了

    评论

报告相同问题?

悬赏问题

  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 flask项目,怎么使用AJAX传数据库数据到echarts图表的data里,实现异步加载数据。
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题