Python numpy 寫入 csv

本篇紀錄如何使用 python numpy 的資料寫入 csv。

將 numpy array 用 savetxt 寫入 csv

以下範例將 numpy array 寫入 csv,

python3-numpy-csv-write.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import numpy as np

arr = np.asarray([
[1,2,3],
[4,5,6],
[7,8,9]
])

print(type(arr)) # <class 'numpy.ndarray'>
np.savetxt('output_data.csv', arr, delimiter=',')
#np.savetxt('output_data.csv', arr, delimiter=',', fmt='%d')
#np.savetxt('output_data.csv', arr, delimiter=',', fmt='%.2f')

輸出的 output_data.csv 內容如下,

1
2
3
1.000000000000000000e+00,2.000000000000000000e+00,3.000000000000000000e+00
4.000000000000000000e+00,5.000000000000000000e+00,6.000000000000000000e+00
7.000000000000000000e+00,8.000000000000000000e+00,9.000000000000000000e+00

如果加入 fmt 參數的話可以控制輸出的格式,例如可以控制輸出的精準度 fmt='%d' 為整數 (預設為 fmt='%.18e'),輸出的 output_data.csv 內容如下,

1
2
3
1,2,3
4,5,6
7,8,9

如果是 fmt='%.2f' 為小數點第二位,輸出的 output_data.csv 內容如下,

1
2
3
1.00,2.00,3.00
4.00,5.00,6.00
7.00,8.00,9.00

另外如果是使用 arr.tofile('output_data.csv', sep=',') (numpy.ndarray.tofile) 的方式寫入 csv 是不會換行的。

其他參考
numpy.savetxt — NumPy Manual
https://numpy.org/doc/stable/reference/generated/numpy.savetxt.html
python - Setting the fmt option in numpy.savetxt - Stack Overflow
https://stackoverflow.com/questions/17043393/setting-the-fmt-option-in-numpy-savetxt

其它相關文章推薦
如果你想學習 Python 相關技術,可以參考看看下面的文章,
Python 寫入 csv 檔案
Python 新手入門教學懶人包
Python str 字串用法與範例
Python list 串列用法與範例
Python set 集合用法與範例
Python dict 字典用法與範例
Python tuple 元組用法與範例