我正在尝试将一些文本文件加载到 numpy 数组中。.txt 文件表示图像的像素,其中每个像素被赋予介于 -10 和 +10(对于 x)和 0 和 10 对于 y 之间的任意相对坐标。总的来说,图像是 10x256 像素。问题是每个像素都没有给出一个 RGB 值,而是给出了一个强度列表,该列表对应于第一个 /n 分隔的“标题”中的波长值。每个坐标作为两个第一个制表符分隔的项目给出,第一个条目只有“0 0”,因为文本文件的格式如下:
Line 1: "0 0 625.15360 625.69449 626.23538 ..." (two coordinates followed by the wavelengths)
Line 2: "-10.00000 -10.00000 839 841 833 843 838 847 ..."
Line 3: "-10.00000 -9.92157 838 839 838 ..."
其中 839 和 838 表示两个不同相邻像素的波长 625.15360 的强度,一个在另一个之上(y 的变化很小)。此外,841 和 839 将是 625.69449 波长的强度,依此类推。
到目前为止,我的推理是使用np.genfromtxt()
并添加到一个新数组 3D numpy 数组中迭代文件,其中每个变量(x,y,lambda)都被分配一个单一的强度值。另外,我认为如果 x 和 y 分别跨越 0-9 和 0-255 来表示图像而不是数据中给出的任意相对坐标,这将更有意义......
问题:我不知道如何将数据加载到 3x3 中(卡在 2x2 中),而且我似乎无法正确切片......
到目前为止我所拥有的:
intensity_array2 = np.zeros([len(unique_y),len(unique_x)], dtype= int)
for element in np.nditer(intensity_array2, op_flags=['readwrite']):
for i in range(len(unique_y)):
for j in range(len(unique_x)):
with open(os.path.join(path_name,right_file)) as rf:
intensity_array2[i,j] = np.genfromtxt(rf, skip_header = (i*j)+j, delimiter = " ")
在上述函数中的位置len(unique_y) = 10
和位置。len(unique_x) = 256