2016-04-01 201 views
0

我有几个特征的图像和后期图像预处理,我有大量的数据,我需要在未来的作品中经常使用。为了节省时间,我想以csv格式保存图像特征的数据。以下图像特征是行属性:强度,偏度,峰度,标准偏差Max5,Min5。如何将特征矩阵保存为csv文件

这里每个图像特征是一个大小为(34560,1)的数组。

如何制作由所有这些图像特征组成的csv文件。

+0

让你拥有34560为每六个连胜numpy的数组属性:

np.savetxt('out.csv', x, delimiter=',') 

这可以在同一行中做了什么?你想保存到一个单一的CSV文件? – Hun

+0

如果你有任意对象,最简单的方法就是将它们串起来,这是用于序列化的Python字。如果你的情况都是Numpy数组,你可以使用'np.save'或'np.savez'来放置它们,而不需要从.csv中读取它们并将它们重新转换为np.arrays。 'np.load'把他们带回来。 – roadrunner66

+0

@Sung我有一个图像和一个标签总共80个特征,即总共81个属性,每个属性是一个大小为176526x1的numpy列数组。我想将它们保存在单个文件中以节省时间,这样我就不必每次都计算它们。 –

回答

0

例如,如果哟有你出来放到一个变量“结果”,那么你可以使用“Myresult”的地方下面的命令

import pandas as pd 
result = "......................"(your expression) 
result1 = pd.DataFrame({'col1':result[:,0],'col2':result[:,1]}) 
result1.to_csv('Myresult.csv', header = False) 

保存结果以CSV格式,你可以提你的欲望的输出路径。在我的情况下,它会像“C:\ Users \ dinesh.n \ Desktop \ Myresult.csv”。 如果不是请原谅我,纠正我,我希望它清除您的疑问。 谢谢。

+0

感谢您的回复。以上解决方案显示__'numpy.ndarray'对象没有属性'to_csv'__,因为我的结果是大小为[176256,81]的numpy.ndarray。另一个问题是我有一个标题也** **像头** **,熵等**。那么你想建议什么?谢谢 –

1

如果要将属性名称包含到numpy数组中,则可以使用structured array。但是这会让事情变得更加复杂。我宁愿使用相同的类型保存numpy数组,并将属性名称保存在别的地方。这是更直接,更容易使用。

实施例:为了简单起见,让我们说,你有长度为4的3个栏阵列:A,B,C

a -> array([[1], 
      [2], 
      [3], 
      [4]]) 

a.shape -> (4,1) 

b和c阵列具有相同的阵列形状。

为了更快地访问数据,最好将其作为行数组,以便在加载时将其连续存储在磁盘和内存中。

a = a.ravel(); b = b.ravel(); c = c.ravel() 
a - > array([1, 2, 3, 4]) 
a.shape -> (4,) 

然后,您将它们堆叠到一个大型数组中并将其保存到csv文件中。

x = np.vstack((a,b,c)) 
array([[1, 2, 3, 4], 
     [5, 6, 7, 8], 
     [9, 10, 11, 12]]) 
x.shape -> (3,4) 

然后,将这个堆叠的数组保存到csv文件。

np.savetxt('out.csv', np.vstack(a.ravel(), b.ravel(), c.ravel()), delimiter='x') 
+0

谢谢宋。如何添加属性名称。因为我有大量的数据,如果我保存没有标题的数据,那么对于我来说,哪个列代表什么功能会让我感到困惑。 –

+0

在这种情况下,你必须使用结构化数组。我在我之前的帖子中发布了链接。 – Hun