【发布时间】:2018-10-21 08:45:07
【问题描述】:
我正在尝试在 csv 文件的第一列中写入 img_id(单个值),在 csv 文件的其余列中写入图像特征数组(f_descriptor_T)。
我写了以下代码:
path=/home/dir
listing = os.listdir(path)
for file in listing:
path_img_ext = os.path.join(path, file) #combine filename and extension
data_read = feature_io.ReadFromFile(path_img_ext) #read single features of single image in each iteration
base=os.path.basename(file) #Extract image_id from its name
os.path.splitext(file)
img_id = os.path.splitext(base)[0]
f_descriptor = data_read[2] #Extract particular array, from multiple arrays of features
feature_flat=f_descriptor.flatten() #Make flat array
f_descriptor_T = np.array(feature_flat).T #Transpose feature array to convert col data to row form.
with open("output_0.csv", "a") as f:
writer = csv.writer(f)
writer.writerow([img_id])
writer.writerow(f_descriptor_T)
不幸的是,输出在第一行显示img_id,在第二行显示f_descriptor_T,每次循环迭代,如下图所示:Output
但我想将两者(变量和数组)组合在单行中。
注意:我尝试使用 zip 和 concatenate 将两者结合起来,但失败了。
所需的输出应该是这样的:Desired Output不需要打印列标题,只需要在单行中打印 img_id 和 f_descriptor_T 数组。
【问题讨论】:
-
你的数组
f_descriptor_T是一个三行数组。你想让它们在 one 行是什么意思? -
我不会使用
csv.writer来编写数组。尝试使用np.savetxt编写数组。更好的是,研究它的代码,看看它是如何直接写入数组行的(没有csv模块)。 -
@Dyz 它将特征向量转换为 ["[-0.00369344 -0.08348401 0.29953018 ... 0.38050437 0.01184894],并将 ... 保存在 csv 中,而不是整个 numpy 特征数组。
-
@hpaulj 我想将其保存为 csv 格式以供进一步处理,而且我有一个变量(id)和一个数组(特征),我想将它们组合起来。
-
进一步处理?通过什么方式?保存后的 csv 应该是什么样子?