【问题标题】:Iterate and transfer dataframe information to an image迭代数据帧信息并将其传输到图像
【发布时间】:2020-11-09 22:56:03
【问题描述】:

我正在尝试将数据帧行 0 到 15 和列 col1 到 col 16 的几个块的信息“转换”为图像 (16x16)。 如您所见,在每个 16x16 块之间,我有一个空行。

我正在从 .txt 文件中读取数据框:

df = pd.read_csv('User1/Video1.txt', sep="\s+|\t+|\s+\t+|\t+\s+", header=None, names=headers, engine='python', parse_dates=parse_dates)
                        date arrow  col1  col2  ...  col13  col14  col15  col16
0    2020-11-09 09:53:39.552    ->   0.0   0.0  ...    0.0    0.0    0.0    0.0
1    2020-11-09 09:53:39.552    ->   0.0   2.0  ...    0.0    0.0    0.0    0.0
2    2020-11-09 09:53:39.552    ->   0.0   0.0  ...    0.0    0.0    6.0    6.0
3    2020-11-09 09:53:39.552    ->   0.0   0.0  ...    0.0    0.0    0.0    0.0
4    2020-11-09 09:53:39.586    ->   0.0   9.0  ...    0.0    7.0    0.0    0.0
...
15   2020-11-09 09:53:39.586    ->   0.0   9.0  ...    0.0    7.0    0.0    0.0
16   2020-11-09 09:53:39.586    ->
...                 
1648 2020-11-09 09:54:06.920    ->   4.0   0.0  ...    4.0    4.0    0.0    0.0

我能够重塑第一个 16x16 块:img=np.resize(df.iloc[:16, -16:].to_numpy(), (16, 16, 3)),但我想遍历所有数据帧并对每个 16x16 块的所有像素值求和。

你能提供什么建议吗?谢谢。

【问题讨论】:

标签: python pandas


【解决方案1】:

如果您可以提供前 32 行和前 32 列的输入,我可以测试,但请尝试以下代码(未经测试)。本质上,您可以遍历每个 16x16 块,获取总和并附加到列表中:

i = 16
img_list = []
for _ in range(df.shape[0] / 17):
    img = np.resize(df.iloc[i-16:i, -16:].to_numpy(), (16, 16, 3))
    img_sum = img.sum()
    img_list.append(img_sum)
    i += 17 

编辑:我刚刚看到你有一个空行分隔块。我已将必要的值更新为17

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2018-06-09
    相关资源
    最近更新 更多