如何在Python中将csv值形式的文件存储到numpy数组?

问题描述 投票:0回答:1

我编写了一个Python脚本,该脚本读取黑白位图图像,并将每个像素的值存储为.txt文件中从0x00到0xFF的十六进制值。这些值存储为一个连续的一维数组,以逗号分隔,并且为了没有非常宽的文件,这些行的长度仅为16个元素,例如::

v01, v02, ... , v15, v16,
v17, v18, ... , v31, v32,
...
0x00, 0x00, ... , 0x00, 0x00,
0x00, 0x00, ... , 0x00, 0x00,
...

注意,每行的最后一个元素也有一个逗号

当然.txt文件不会保留位图的原始尺寸,但这不是问题,因为稍后它将在微控制器固件中使用,该固件知道原始尺寸并会正确读取一维数组。

现在,为了验证转换是否正确完成,我需要编写一个脚本来读取文件,并将其值存储在一个numpy数组中,该数组用于以后通过“ matplotlib”显示图像。我尝试了以下代码:

my_data = genfromtxt('file.txt', delimiter=',')
print(my_data)

问题在于,除了错误的尺寸外,十六进制值不被读取为数字,并且行的最后一个逗号之后的元素也被读取(我猜是断字符)。我得到类似的东西:

[nan, nan, ... , nan, nan," "
...]

我需要一种读取.txt文件的方法,将值从“ 0x00”格式转换为数值,然后存储在m x n numpy数组中(m&n是已知参数,原始位图大小:]]

[[0, 0, ... , 0, 0]
 [0, 0, ... , 0, 0]
 ...]

关于此操作的任何建议吗?

我编写了一个Python脚本,该脚本读取黑白位图图像,并将每个像素的值存储为.txt文件中从0x00到0xFF的十六进制值。值存储为连续的一维数组...

python arrays numpy csv hex
1个回答
0
投票
import numpy as np

fname = 'file.txt'
num_cols = 16
np.loadtxt(fname, usecols=range(num_cols), dtype=np.uint8, converters={k: lambda x: int(x, 16) for k in range(num_cols)}, delimiter=',')
© www.soinside.com 2019 - 2024. All rights reserved.