python读取csv为矩阵 - python读取文件到数组




将NumPy数组转储到csv文件中 (5)

有没有办法将NumPy数组转换为CSV文件? 我有一个2D NumPy数组,需要将其转储为可读格式。


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


numpy.savetxt将数组保存到文本文件。

import numpy
a = numpy.asarray([ [1,2,3], [4,5,6], [7,8,9] ])
numpy.savetxt("foo.csv", a, 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)

如果你想将你的numpy数组(例如your_array = np.array([[1,2],[3,4]]) )保存到一个单元格中,可以先用your_array.tolist()将其转换。

然后以正常方式将其保存到一个单元格中,使用delimiter=';' 并且csv文件中的单元格将如下所示[[1, 2], [2, 4]]

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


用熊猫轻松快捷

import pandas as pd 
df = pd.DataFrame(np_array)
df.to_csv("file_path.csv")




numpy