python numpy写入到csv
时间: 2025-07-04 15:17:01 浏览: 11
在使用 Python 的 NumPy 库将数据写入 CSV 文件时,主要可以通过 `numpy.savetxt()` 和 `numpy.ndarray.tofile()` 两种方法实现。以下是详细说明和示例。
### 使用 `numpy.savetxt()` 方法
`numpy.savetxt()` 是一种常用的方式,用于将数组保存为文本文件(如 CSV 或 TSV)。它支持指定分隔符、格式化字符串以及添加头部或尾部信息[^1]。
#### 示例代码:
```python
import numpy as np
# 创建一个示例数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 将数组写入 CSV 文件,使用逗号作为分隔符
np.savetxt('output.csv', arr, delimiter=',', fmt='%f')
```
- `delimiter=','` 指定以逗号分隔列。
- `fmt='%f'` 表示以浮点数格式保存数据。可以更改为 `%d` 保存整数或其他格式。
- 可选参数 `header='your header'` 添加文件头信息。
- 可选参数 `footer='your footer'` 添加文件尾信息。
如果需要保存为 TSV 格式(即使用制表符 `\t` 分隔),只需修改 `delimiter` 参数:
```python
np.savetxt('output.tsv', arr, delimiter='\t', fmt='%f')
```
### 使用 `numpy.ndarray.tofile()` 方法
`numpy.ndarray.tofile()` 方法也可以将数组写入文件,但其设计初衷更多用于二进制存储。不过,通过设置 `sep` 参数,也可以生成文本格式的 CSV 文件[^2]。
#### 示例代码:
```python
# 创建一个示例数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# 写入 CSV 文件,使用逗号分隔
arr.tofile('output_tofile.csv', sep=',', format='%f')
```
- `sep=','` 表示以逗号作为字段分隔符。
- `format='%f'` 控制数值的输出格式。
需要注意的是,该方法不会自动添加换行符,因此对于二维及以上数组,所有数据都会被展平并写入单行,除非手动处理换行逻辑。
### 处理嵌套结构的数组
如果目标是将具有嵌套结构的数据(例如 `[[1, 2], [2, 4]]`)写入 CSV 文件中的单个单元格,则需要先将其转换为字符串表示形式,然后再进行写入操作[^3]。
#### 示例代码:
```python
import numpy as np
# 创建包含嵌套列表的数组
nested_list = [[1, 2], [2, 4]]
nested_array = np.array(nested_list, dtype=object)
# 转换为字符串格式以便写入 CSV
str_representation = str(nested_list)
# 构造一个新的数组,其中包含字符串表示
final_array = np.array([[str_representation]])
# 写入 CSV 文件
np.savetxt('nested_output.csv', final_array, delimiter=',', fmt='%s')
```
### 注意事项
- 如果希望保留原始数组的结构(例如二维数组),请确保 `savetxt()` 中的 `X` 是二维数组,并且正确设置了 `delimiter`。
- 当使用 `tofile()` 方法时,注意它不支持直接写入多维数组的结构,会自动将其展平为一维序列。
- 对于复杂数据类型或需要与 Excel 等工具兼容的情况,建议优先使用 `pandas` 库进行更灵活的操作。
---
阅读全文
相关推荐


















