如何将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数组(例如your_array = np.array([[1,2],[3,4]]))到一个单元格,你可以先用your_array.tolist()转换它。

然后以正常的方式保存到一个单元格,分隔符=';' csv-file中的单元格看起来像这样[[1,2],[2,4]]

然后你可以像这样恢复你的数组: Your_array = np.array(ast.literal_eval(cell_string))

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

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

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


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

import numpy as np

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

如果你想写在列:

    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)

如前所述,将数组转储到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=",")

希望能有所帮助