2016-04-26 57 views
1

我正在计算从目录读取的图像的功能,我想将图像路径和相应的功能写入文件中,并用空格分隔。输出期望以这种方式如何在文件中编写一个字符串和一个numpy数组?

/path/to/img1.jpg 1 0 0 1 3.5 0.2 0 
/path/to/img2.jpg 0 0 0.5 2.1 0 0.7 
... 

以下是我的代码

features.open('file.txt', 'w') 
for fname in fnmatch.filter(fileList, '*.jpg'): 
    image = '/path/to/image' 
    # All the operations are here 
    myarray = [......] # array of dimensions 512x512 
    myarray.reshape(1, 512*512) # Reshape to make it a row vector 
    features.write(image + ' '.join(str(myarray))) 
features.write('\n') 
features.close() 

一部分,但输出来作为

/path/to/img1.jpg[[0 0 1.0 2 3]] 
/path/to/img2.jpg[[1.2 0 1.0 2 0.3]] 
+2

您能否定义“不正确?”一点也不?输出如何? – tfv

+0

编辑帖子。 –

回答

4

你的问题出在下面的语句:

>>> ' '.join(str(np.array([1,2,3]))) 
'[ 1 2 3 ]' 

你先转身e数组转换为字符串格式

>>> str(np.array([1,2,3])) 
'[1 2 3]' 

然后再加入字符串(单个字符)的元素与中间的空格。


相反,你需要使用map打开numpy的数组的单个元素转换为字符串列表,例如。

>>> map(str, np.array([1,2,3])) 
['1', '2', '3'] 

只有这样,你应该加入生成的字符串列表中的元素:

>>> ' '.join(map(str, np.array([1,2,3]))) 
'1 2 3' 

下一个问题将来自于事实,你有numpy的阵列实际上是二维:

这很容易解决,因为您已经使用将它变成单行。因此,只需将map应用于第一行:

>>> ' '.join(map(str, np.array([[1,2,3]])[0])) 
'1 2 3' 
相关问题