2013-09-30 40 views
2

我想創建一個numpy的數組來保存不同類型的像這樣:製作與混合型一numpy的陣列和寫它爲CSV

na_csv_output = np.zeros((len(ldt_timestamps),1),dtype=('i4,i4,i4,a10,a10,i4')) 

這樣做的問題是,所有的6個值存儲爲單一條目,而我更喜歡它是6列,以便它們可以正確書寫爲CSV。有沒有什麼辦法可以通過使用numpy數組來完成? (或其他類似列表)

P.S.

即使當我嘗試使用

​​

它說

TypeError: float argument required, not numpy.string_ 

所以這是另外一個問題來寫,我從最初的嘗試到一個文件中的值。

回答

2

要訪問每列,請使用na_csv_output['f0']f1f2等,其中f代表字段。

將其保存到一個文件,首先使其一維數組,

na_csv_output = np.zeros((len(ldt_timestamps)),dtype=('i4,i4,i4,a10,a10,i4')) 

要保存它,你可以去這樣的事情,例如

np.savetxt('eventResults.csv', na_csv_output, fmt='%f, %f, %f, string= %s %s, last number = %f', delimiter=",") 
+0

這正是我需要的,但它不能正常工作,如果我儘量做到一維和插入像na_csv_output元素[0] = [(1,1,1,「A」,」 ('len(ldt_timestamps),1),dtype =('i4,i4,i4,a10,a10,b',1)]它表示TypeError:期望一個可讀的緩衝區對象,如果我做它na_csv_output = np.zeros i4'))它說AttributeError:fmt的%格式數量錯誤。 %f,%f,%f,%s,%s,%f – mzm

+0

使用'na_csv_output [0] =(1,1,1,'a','b',1)'作爲賦值,與一維數組。 – gg349

+0

太棒了,這個就像一個魅力! – mzm

0

我會用pandas。它使csv操作非常簡單。

import pandas as pd 
# omit second argument to np.zeros to get 1-d data 
na_csv_output = np.zeros((len(ldt_timestamps),),dtype=('i4,i4,i4,a10,a10,i4')) 
df = pd.DataFrame(na_csv_output) 
df.to_csv('eventResults.csv') 
0
with open('eventResults.csv','w') as f: 
    for x in xx: 
     np.savetxt(f,x,fmt='%f, %f, %f, %r, %r, %f') 
     # np.savetxt(f,x,fmt='%r',delimiter=', ')