这种数据格式是什么?以及如何从numpy数组转换?

时间:2018-02-10 07:42:12

标签: python numpy python-imaging-library

我尝试在txtfile中使用这种数据格式进行模式识别分配。

3.700000000000000000e + 01

但我只是设法写了这个。

import numpy
import PIL

# Convert Image to array
img = PIL.Image.open("imagefilename.png").convert("L")
arr = numpy.array(img)

并且我得到的输出是这个。

[[ 85  85  86 ..., 194 196 194]
 [ 84  84  85 ..., 194 196 194]
 [ 84  85  86 ..., 193 195 195]
 ..., 
 [177 177 177 ..., 162 162 162]
 [174 174 173 ..., 163 163 163]
 [  1   1   1 ...,   0   0   0]]

所以我的问题是这种格式是什么? 的 3.700000000000000000e + 01 它跟随我的讲师在txt文件中的样本。

以及如何从RGB图像转换它?

1 个答案:

答案 0 :(得分:1)

这很可能是科学记数法:

3.7e+01 = 3.7 * 10**1
2.8e+03 = 2.8 * 10**3 

等。另见:Display a decimal in scientific notation 这里有更多解释:https://en.wikipedia.org/wiki/Scientific_notation

如果你把它放到变量中,python就会知道它:

d = 3.7e6
print(d)

输出:

3700000.0  

至于如何将其转换为图像:它是一个数字 - 除非你拥有更多的数字,否则他们不会制作图像。

我所知道的大多数图像格式都使用三元组/四元组(RGB / RGBA)或/和widht * height的离散值。

如果您希望以这种方式使用它们,您可以将字节值转换为浮点值,但我的对冲猜测是他们只执行value/255.0来实现此目的。

在此处阅读更多内容:http://scikit-image.org/docs/dev/user_guide/data_types.html

要从int上的np数组转换为np浮点数组:

import numpy as np

arr = np.array([5,7,200,255])
print(arr)

arr = arr / 255.0
print (arr)

输出:

[  5   7 200 255]
[ 0.01960784  0.02745098  0.78431373  1.        ]