我从机器学习中的Python开始,我对自己解决老的Kaggle竞争感兴趣。 我需要做的第一件事是将编码像素列表转换为边界框,将其转换为具有左上和右下矩形坐标,在特定输出中将其保存并保存到文件中
我已经找到了使用RLE算法转换编码像素的示例,我需要对其进行更改以保存到文件中。我的特殊问题是将元组保存为x1,y1,x2,y2
格式的文件
我有一个代码,该代码从像素列表中获取第一个和最后一个坐标。首先,我尝试了:
f = open("file.txt", "w")
f.write(str(mask_pixels[0]) + str(mask_pixels[len(mask_pixels)-1]))
f.write("\n")
f.close()
但是输出类似于(469, 344)(498, 447)
(这是一个元组,这样就可以了)。
我尝试使用join
函数,如下所示:
coordinates = mask_pixels[0], mask_pixels[len(mask_pixels)-1]
f = open("file.txt", "w")
for x in coordinates:
f.write(",".join(str(x)))
f.write("\n")
f.close()
但是它将另存为(,4,6,9,,, ,3,4,4,)(,4,9,8,,, ,4,4,7,)
所以我尝试了
f = open("file.txt", "a")
f.write(str(coordinate1))
f.write(",")
f.write(str(coordinate2))
f.write("\n")
f.close()
但是它将其另存为(469, 344),(498, 447)
,这仍然是我不需要的东西。
谁能给我一个提示,如何将469,344,498,447
之类的文件包含在文件中?我不是直接要求代码(我知道你们可能没有时间),但我正在寻找一个想法,我应该阅读/学习什么。
答案 0 :(得分:2)
with open("file.txt", "w") as f:
print(*sum((mask_pixels[0],mask_pixels[-1]),()),sep=', ',file=f)
输出
469, 344, 498, 447
答案 1 :(得分:1)
您可以在列表中转换元组并将其连接:
a = (469, 344)
b= (498,447)
result = list(a) + list(b)
输出:
[469, 344, 498, 447]
要回到您的代码,它可能看起来像这样:
f = open("file.txt", "w")
f.write(str(list(str(mask_pixels[0])) + list(str(mask_pixels[len(mask_pixels)-1]))))
f.write("\n")
f.close()
如果您想保存所有蒙版,甚至可以进行双重列表理解:
a = (469, 344)
b= (498,447)
c = (512,495)
list_of_tuples = [a, b, c]
result = [item for sublist in list_of_tuples for item in sublist]
Out : [469, 344, 498, 447, 512, 495]