Python:如何使浮点数组的大数组保持相对较小?

2024-04-24 10:11:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个numpy数组,它是用cv2包读取许多图像创建的。我以灰度读取图像,所以像素值从0到255,在这种情况下,数据类型是uint8。这意味着每个数据元素的大小为1字节。我使用每个图像创建一个列表,然后希望将数组列表转换为数组数组。之后,我需要将这些数据输入到一个模型中,但是模型需要图像像素值在1到0之间浮动。现在Python中的每个float是8个字节。所以我试着用这个cv2函数转换每个数组

unlabeled_img_array = cv2.normalize(unlabeled_img_array.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)

它可以工作,我可以创建数组列表。当我试图将数组列表转换为数组数组时,会出现这样的问题:

^{pr2}$

然后我得到一个内存错误,显然是因为矩阵太大了。如果我用uint8数据类型来做,就没有错误了。在

我的问题是。有没有办法克服这个问题,或者我必须坚持使用uint8而不是浮点值?在

编辑:

我也试过用这个

cv2.normalize(unlabeled_img_array.astype(np.float16), None, 0.0, 1.0, cv2.NORM_MINMAX)

但它给了我这个错误

TypeError: src data type = 23 is not supported

有没有办法让数组变成float16?也许这样可以缩小尺寸。虽然我不确定模特是否会接受它。在


Tags: 数据模型图像列表img字节错误像素