将列表转换为2d矩阵

时间:2015-12-01 12:12:08

标签: python list data-conversion

我将数据存储在如下的顺序列表中:

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.        ]])

1 个答案:

答案 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])