Numpy savetxt到csv的整数字符串

2024-09-30 01:24:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有三个列表,我想用numpy的savetxt函数将它们保存在一个csv文件中。在

list1、list2和list3的长度相同,只有一个值。在

list1,list2是整数值,list3有字符串值

所以最后应该是这样的column1=list1 column2=list2column3=list3

如果list3也是整数,这对我也有效。它现在不起作用,因为list3是一个字符串。

如何使用list3作为字符串实现这一点,并为c_找到解决方法?在

savetxt('data/result.csv', c_(list1,list2,list3), delimiter=',', fmt='%d, %d, %d', 
            header='Name,Value,Value2', comments = '')

非常感谢你的帮助!在


Tags: 文件csv方法函数字符串numpy列表整数
1条回答
网友
1楼 · 发布于 2024-09-30 01:24:14

一个问题是:

c_(list1, list2, list3)

^{}是一个奇怪的对象,它被索引而不是调用它。当您调用它时,您会看到注释中提到的错误:

^{pr2}$

相反,请使用方括号,这样可以索引:

In [44]: c_[list1, list2, list3]
Out[44]: 
array([['10', '15', 'foo'],
       ['20', '25', 'bar'],
       ['30', '35', 'baz']], 
      dtype='|S3')

注意,它使用dtype '|S3'创建一个数组。也就是说,数组中的所有元素都已转换为字符串。要用savetxt保存,请使用fmt='%s, %s, %s'

In [45]: savetxt('result.csv', c_[list1, list2, list3], fmt='%s, %s, %s')

In [46]: !cat result.csv
10, 15, foo
20, 25, bar
30, 35, baz

另外,可以使用c_[list1, list2, list3],而不是c_[list1, list2, list3]。然后,savetxt函数将处理将该参数转换为数组的问题。在

In [57]: list1 = [100000, 200000, 300000]

In [58]: savetxt('result.csv', zip(list1, list2, list3), fmt='%s, %s, %s')

In [59]: !cat result.csv
100000, 15, foo
200000, 25, bar
300000, 35, baz

显然c_不能很好地计算出字符串的适当长度:

In [60]: c_[list1, list2, list3]
Out[60]: 
array([['100', '15', 'foo'],
       ['200', '25', 'bar'],
       ['300', '35', 'baz']], 
      dtype='|S3')

顺便说一句,您的数据还没有在numpy数组中,所以我认为使用savetxt而不是标准库^{}并不会获得太多好处。例如

In [61]: import csv

In [62]: with open('result.csv', 'w') as f:
   ....:     wrtr = csv.writer(f)
   ....:     wrtr.writerows(zip(list1, list2, list3))
   ....:     

In [63]: !cat result.csv
100000,15,foo
200000,25,bar
300000,35,baz

相关问题 更多 >

    热门问题