使用混合类型创建一个numpy数组并将其写为csv

时间:2013-09-30 22:54:06

标签: python numpy

我正在尝试创建一个numpy数组来保存不同的类型:

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

这个问题是所有6个值都存储为单个条目,而我希望它是6个列,以便它们可以正确地写为CSV。有什么办法可以通过使用numpy数组来完成吗? (或其他类型的列表)

P.S。

即使我尝试使用

将我从初始尝试获得的值写入文件
np.savetxt('eventResults.csv', na_csv_output, delimiter=",")

它说

TypeError: float argument required, not numpy.string_

这是另一个问题。

3 个答案:

答案 0 :(得分:2)

要访问每列,请使用na_csv_output['f0']f1 f2等,其中f代表字段。

要将其保存到文件中,请首先将其设为1D数组

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=",")

答案 1 :(得分: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')

答案 2 :(得分: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=', ')