1. 程式人生 > >python 把一個m*n的二維矩陣轉換成一個m*n行,三列的列表

python 把一個m*n的二維矩陣轉換成一個m*n行,三列的列表

        在資料處理的時候,我們經常遇到需要把一個矩陣,轉換成列表,如下的矩陣轉換成列表:

800 801 802
1189 1163.569 1163.569 1163.569
1190 1163.584 1163.584 1163.584
1191 1163.635 1163.635 1163.635
1192 1163.741 1163.741 1163.741

對於上表,我們可以把第一行視為X軸,把第一列視為Y軸,其他數值為對應座標上的值

1189 800 1163.569
1190 800 1163.584
1191 800 1163.635
1192 800 1163.741
1189 801 1163.569
1190 801 1163.584
1191 801 1163.635
1192 801 1163.741
1189 802 1163.569
1190 802 1163.584
1191 802 1163.635
1192 802 1163.741

以下為原始碼

import numpy as np
import pandas as pd
from numpy import *

matrix = pd.read_csv('filename.csv', sep=',', header=None)
matrix_shape = matrix.shape #得到二維矩陣的行列數
m = matrix_shape[0] -1
n = matrix_shape[1] - 1
returnMat = zeros((m*n,3)) #創造一個m*n行,3列的零矩陣
i = 0
j = 0
for j in range(n): #遍歷列數
  for i in range(m): #遍歷行數
    returnMat[m*j+i,0] = matrix[0][i+1]
    returnMat[m*j+i,1] = matrix[j+1][0]
    returnMat[m*j+i,2] = matrix[j+1][i+1]
#return returnMat
np.savetxt('d:/result.txt', returnMat)