我有一个看起来像这样的文件:
row column layer value1 value2
8 454 1 0.000e+0 1.002e+4
8 455 1 0.000e+0 1.001e+4
8 456 1 0.000e+0 1.016e+4
8 457 1 0.000e+0 1.016e+4
.
.
.
我想对最后一列进行一些计算(例如乘以10)并保存(就地或作为新文件)而不更改格式。我知道如何加载它,但我不知道如何继续。我执行以下操作来加载数据:
import numpy as np
ic = np.genfromtxt("file.dat",skip_header=1, usecols=(0,1,2,4),
dtype=None, names = ['row', 'column', 'layer', 'value2'])
文件大概150M,因此快速执行会有所帮助。
答案 0 :(得分:1)
您的示例的列的索引仅为0到4,因此usecols=(0,1,2,5)
会在示例中生成错误。假设usecols=(0,1,2,4)
:
您可以使用
就地修改数组for i in range(0,len(ic)):
ic[i]['value2'] *= 10
并使用
将其保存为制表符分隔的文本np.savetxt("mul.dat", ic, fmt="%d %d %e %e", delimiter="\t", header=" ".join(ic.dtype.names))
制造
# row column layer value2
8 454 1.000000e+00 1.002000e+05
8 455 1.000000e+00 1.001000e+05
8 456 1.000000e+00 1.016000e+05
8 457 1.000000e+00 1.016000e+05
但如果value1
导致它永远不会被读入,您将无法写出usecols(0,1,2,4)
列。