python - 在python中将浮点数和整数打印到具有给定格式的文件中
问题描述
我有这个简单的代码:
import numpy as np
from numpy import random
import csv
import os
import pandas as pd
data=np.loadtxt('lums.dat')
data2=np.loadtxt('all.dat')
shuffle=np.random.shuffle(data[0::1])
with open('data', 'w') as f:
writer = csv.writer(f, delimiter=" ")
writer.writerows(zip(data2[:,0], data2[:,1], data[:,0], data[:,1], data2[:,4], data2[:,5]))
输出如下所示:
42.9356886 1.0 30.91534 1.0 0.899 1.0
43.6177968 1.0 30.76019 1.0 1.5 1.0
42.6341244 1.0 29.26717 0.0 0.61 1.0
但是,我需要第二、第四和第六列是整数,并且我还希望能够指定第一、第三和第五列的位数。有没有一种简单的方法可以做到这一点?
编辑:文件 lums.dat 包含:
31.2114100 1
33.0060900 1
31.1879700 1
31.1502300 1
30.0178600 1
29.8382100 1
文件 all.dat 包含:
42.9356886 1 31.2114100 1 0.89900000 1
43.6177968 1 33.0060900 1 1.50000000 1
42.6341244 1 31.1879700 1 0.61000000 1
42.5828698 1 31.1502300 1 0.69700000 1
42.2789821 1 30.0178600 1 0.26000000 1
41.9161537 1 29.8382100 1 0.21400000 1
解决方案
In [32]: txt="""42.9356886 1 31.2114100 1 0.89900000 1
...: 43.6177968 1 33.0060900 1 1.50000000 1
...: 42.6341244 1 31.1879700 1 0.61000000 1"""
In [33]: data = np.loadtxt(txt.splitlines())
In [34]: data
Out[34]:
array([[42.9356886, 1. , 31.21141 , 1. , 0.899 ,
1. ],
[43.6177968, 1. , 33.00609 , 1. , 1.5 ,
1. ],
[42.6341244, 1. , 31.18797 , 1. , 0.61 ,
1. ]])
将其写入指定格式的文件:
In [37]: np.savetxt('test.csv', data, fmt='%.7f %d %.7f %d %.7f %d')
In [38]: cat test.csv
42.9356886 1 31.2114100 1 0.8990000 1
43.6177968 1 33.0060900 1 1.5000000 1
42.6341244 1 31.1879700 1 0.6100000 1
推荐阅读
- python - 使用 plotly 绘图时出现警告错误
- javascript - 为什么在 dockerfile 中使用复制两次?
- java - java OOP 终极井字游戏网格
- python - Python线程循环不继续?
- c# - 应用依赖注入时如何使用子类
- kotlin - Kotlin 中两种初始 MutableLiveData 方式有什么不同?
- awk - awk if 0 除以 x 输出 0
- sql - 如何在 Power BI 中加入 2 个表,条件涉及第 3 个表
- linux - 使用 UNIX 命令行工具将 JSON 拆分为多行
- c# - 窗口大小更改时如何处理窗口内的 UserControl