将列表转换为二维矩阵

2024-09-28 22:26:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

Tags: 数据x1y1y2y0x0x0y1x1y1
1条回答
网友
1楼 · 发布于 2024-09-28 22:26:05

我有一个可能改进的解决方案:

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

相关问题 更多 >