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


当前回答

要将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')

其他回答

我相信你也可以很简单地做到以下几点:

将Numpy数组转换为Pandas数据框架 另存为CSV

例如# 1:

    # Libraries to import
    import pandas as pd
    import nump as np

    #N x N numpy array (dimensions dont matter)
    corr_mat    #your numpy array
    my_df = pd.DataFrame(corr_mat)  #converting it to a pandas dataframe

例如# 2:

    #save as csv 
    my_df.to_csv('foo.csv', index=False)   # "foo" is the name you want to give
                                           # to csv file. Make sure to add ".csv"
                                           # after whatever name like in the code

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文件,它将所有内容保存到一行。

如前所述,将数组转储到CSV文件的最佳方法是使用.savetxt(…)方法。然而,有一些事情我们应该知道如何正确地去做。

例如,如果您有一个dtype = np.int32 as的numpy数组

   narr = np.array([[1,2],
                 [3,4],
                 [5,6]], dtype=np.int32)

并使用savetxt as保存

np.savetxt('values.csv', narr, delimiter=",")

它将以浮点指数格式存储数据

1.000000000000000000e+00,2.000000000000000000e+00
3.000000000000000000e+00,4.000000000000000000e+00
5.000000000000000000e+00,6.000000000000000000e+00

您必须使用名为fmt as的参数来更改格式

np.savetxt('values.csv', narr, fmt="%d", delimiter=",")

以原始格式存储数据

以压缩的gz格式保存数据

此外,savetxt可以用于存储.gz压缩格式的数据,这在通过网络传输数据时可能很有用。

我们只需要将文件扩展名更改为.gz, numpy就会自动处理所有事情

np.savetxt('values.gz', narr, fmt="%d", delimiter=",")

希望能有所帮助

你也可以在不使用任何模块的情况下使用纯python来实现。

# format as a block of csv text to do whatever you want
csv_rows = ["{},{}".format(i, j) for i, j in array]
csv_text = "\n".join(csv_rows)

# write it to a file
with open('file.csv', 'w') as f:
    f.write(csv_text)

在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()

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