[python] 將NumPy數組轉儲到csv文件中



Answers

用熊貓輕鬆快捷

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

有沒有辦法將NumPy數組轉換為CSV文件? 我有一個2D NumPy數組,需要將其轉儲為可讀格式。




如果你想將你的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))




將記錄數組作為帶有標題的CSV文件編寫需要更多的工作。

本示例使用第一行中的標題讀取CSV文件,然後寫入相同的文件。

import numpy as np

# Write an example CSV file with headers on first line
with open('example.csv', 'w') as fp:
    fp.write('''\
col1,col2,col3
1,100.1,string1
2,222.2,second string
''')

# Read it as a Numpy record array
ar = np.recfromcsv('example.csv')
print(repr(ar))
# rec.array([(1, 100.1, 'string1'), (2, 222.2, 'second string')], 
#           dtype=[('col1', '<i4'), ('col2', '<f8'), ('col3', 'S13')])

# Write as a CSV file with headers on first line
with open('out.csv', 'w') as fp:
    fp.write(','.join(ar.dtype.names) + '\n')
    np.savetxt(fp, ar, '%s', ',')

請注意,此示例不考慮包含逗號的字符串。 要考慮非數字數據的引用,請使用csv包:

import csv

with open('out2.csv', 'wb') as fp:
    writer = csv.writer(fp, quoting=csv.QUOTE_NONNUMERIC)
    writer.writerow(ar.dtype.names)
    writer.writerows(ar.tolist())



Links