python 把一個m*n的二維矩陣轉換成一個m*n行,三列的列表
阿新 • • 發佈:2019-01-06
在資料處理的時候,我們經常遇到需要把一個矩陣,轉換成列表,如下的矩陣轉換成列表:
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)