我将数据存储在如下的顺序列表中:
x0 y0 z(x0y0)
x0 y1 z(x0y1)
x0 y2 z(x0y2)
.
.
.
x0 y150 z(x0y150)
x1 y0 z(x1y0)
x1 y1 z(x1y1)
.
.
.
x150 y148 z(x150y148)
x150 y149 z(x150y149)
x150 y150 z(x150y150)
是否有一种简单的方法可以通过以下形式转换此类数据:
x0 x1 x2 . . . x148 x149 x150
y0 z(x0y0) z(x1y0) z(x2y0) . . .
y1 z(x0y1) z(x1y1) z(x2y1) . . .
y2 z(x0y2) z(x1y2) z(x2y2) . . .
. .
. .
. .
y148 .
y149 .
y150 .
在python中?
我已经搜索了这个,但没有找到解决方案。
编辑:使用以下方式加载数据
a = numpy.loadtxt(open(file,"r"),delimiter="\t",skiprows=10)
给出:
array([[ 0. , 0. , 0. ],
[ 0.00100671, 0. , 0. ],
[ 0.00201342, 0. , 0. ],
...,
[ 0.14798658, 0.15 , 0. ],
[ 0.14899329, 0.15 , 0. ],
[ 0.15 , 0.15 , 0. ]])
答案 0 :(得分:0)
我有一个可能的解决方案可以改进:
import numpy
file = 'filename.txt'
a = numpy.loadtxt(open(file,"r"),delimiter="\t",skiprows=10)
xvalues = a[:,0]
yvalues = a[:,1]
zvalues = a[:,2]
diff_xvalues = []
diff_yvalues = []
for x in xvalues:
if x not in diff_xvalues:
diff_xvalues.append(x)
for y in yvalues:
if y not in diff_yvalues:
diff_yvalues.append(y)
matrix = []
for y in range(len(diff_yvalues)):
matrix.append([])
for x in range(len(diff_xvalues)):
matrix[y].append(zvalues[len(diff_xvalues)*y + x])