如何将NumPy数组转储为人类可读格式的csv文件?


当前回答

NumPy .savetxt()方法用于将NumPy数组保存到输出文本文件中,但是默认情况下它将使用科学表示法。


如果希望避免这种情况,则需要使用fmt参数指定适当的格式。例如,

import numpy as np

np.savetxt('output.csv', arr, delimiter=',', fmt='%f')

其他回答

numpy。Savetxt将数组保存到文本文件中。

import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, delimiter=",")

在Python中,我们使用csv.writer()模块将数据写入csv文件。这个模块类似于csv.reader()模块。

import csv

person = [['SN', 'Person', 'DOB'],
['1', 'John', '18/1/1997'],
['2', 'Marie','19/2/1998'],
['3', 'Simon','20/3/1999'],
['4', 'Erik', '21/4/2000'],
['5', 'Ana', '22/5/2001']]

csv.register_dialect('myDialect',
delimiter = '|',
quoting=csv.QUOTE_NONE,
skipinitialspace=True)

with open('dob.csv', 'w') as f:
    writer = csv.writer(f, dialect='myDialect')
    for row in person:
       writer.writerow(row)

f.close()

分隔符是用来分隔字段的字符串。默认值为“,”。

Tofile是一个方便的函数:

import numpy as np
a = np.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
a.tofile('foo.csv',sep=',',format='%10.5f')

手册页有一些有用的注释:

这是一个方便的函数,用于快速存储数组数据。 关于字节序和精度的信息会丢失,因此此方法不会丢失 对于用于归档数据或传输数据的文件来说,这是一个很好的选择 在具有不同字节序的机器之间。其中一些问题可以 通过将数据输出为文本文件来克服 速度和文件大小。

请注意。此函数不会生成多行csv文件,它将所有内容保存到一行。

如果你想写在列:

    for x in np.nditer(a.T, order='C'): 
            file.write(str(x))
            file.write("\n")

这里'a'是numpy数组的名称,'file'是要写入文件的变量。

如果你想写一行:

    writer= csv.writer(file, delimiter=',')
    for x in np.nditer(a.T, order='C'): 
            row.append(str(x))
    writer.writerow(row)

要将NumPy数组存储到文本文件中,请从NumPy模块导入savetxt

假设你的Numpy数组名称是train_df:

import numpy as np
np.savetxt('train_df.txt', train_df, fmt='%s')

OR

from numpy import savetxt
savetxt('train_df.txt', train_df, fmt='%s')