python - 将 .txt 数据加载到 10x256 3d numpy 数组中

标签 python arrays numpy mapping spectral

我正在尝试将一些文本文件加载到 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 表示两个不同的相邻像素(y 变化很小)的波长 625.15360 的强度。此外,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) = 10len(unique_x) = 256 在上面的函数中找到。

最佳答案

我不确定我完全理解您的文件格式,所以如果这没有意义,请原谅我。但是,如果有任何方法可以一次加载所有数据,我相信它会运行得更快。在我看来,您可以使用它来将所有数据放入内存中:

data = np.genfromtxt(rf, delimiter = "")

然后创建 3D 数组:

intensity_array2 = np.zeros( (10, 256, num_wavlengths) )

然后填写 3D 数组的值:

intensity_array2[ 数据[:,0], 数据[:,1], :] = 数据[:, 2:]

这不会完全起作用,因为您的 x 和 y 索引可能会变为负数 - 在这种情况下您可能需要添加偏移量。此外,如果您的输入文件采用可预测的格式,您可能只需在数据矩阵上调用 np.reshape() 即可获得您想要的内容。

关于python - 将 .txt 数据加载到 10x256 3d numpy 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25478428/

相关文章:

python - `MonitoredTrainingSession()`如何与 "restore"和 "testing mode"一起使用?

python - 比较两组字符串,返回不同的结果

javascript - 如何摆脱Javascript字符串中动态指定位置后的所有字符

python - 在元组列表中查找多种模式 - python

python - PyParsing 的嵌套语法行为不符合预期

java - 使用泛型 Object[] 的 ClassCastException 无法转换

javascript - 从嵌套元素中检索链接

python - 将二维数组(字段)添加到 numpy recarray

Python numpy where 函数与日期时间

python - 如何对任意数量的分类变量实现分层 K 折 split ?