矩阵操作

来源:互联网 发布:js 旋转木马图片轮播 编辑:程序博客网 时间:2024/05/18 02:30
#变dataframe为juzhen
import numpy as np  
import pandas as pd  
from numpy import *  


df={800:(1163,1,4),801:(1164,2,5),1192:(1195,3,6)}  
matrix = pd.DataFrame(df,index=[1,2,3])
print(matrix)


#得到二维矩阵的行列数 
matrix_shape = matrix.shape  
m = matrix_shape[0]   
n = matrix_shape[1] 
print(matrix_shape,m,n)  


#创造一个m*n行,3列的零矩阵
returnMat = zeros((m*n,3)) #创造一个m*n行,3列的零矩阵  
print(returnMat)
#输出matrix的第三行第二列元素
print(matrix.iloc[2,1]) 
#打印第一列名称
print(matrix.columns[0])
print(type(matrix.columns[0]))
 
#赋值 
for j in range(n): #遍历列数  #range(n),默认从0开始到n-1
  for i in range(m): #遍历行数 
     #print(i)
     returnMat[m*j+i,2] = matrix.iloc[j,i] 
     returnMat[m*j+i,0] = j+1 
     returnMat[m*j+i,1] = matrix.columns[i]
##return returnMat




print(returnMat)
print(type(returnMat))

#np.savetxt('d:/result.txt', returnMat) 



输出:800   801   1192
1  1163  1164  1195
2     1     2     3
3     4     5     6
(3, 3) 3 3
[[ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]
 ..., 
 [ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]]
5
800
<class 'numpy.int64'>
[[  1.00000000e+00   8.00000000e+02   1.16300000e+03]
 [  1.00000000e+00   8.01000000e+02   1.16400000e+03]
 [  1.00000000e+00   1.19200000e+03   1.19500000e+03]
 ..., 
 [  3.00000000e+00   8.00000000e+02   4.00000000e+00]
 [  3.00000000e+00   8.01000000e+02   5.00000000e+00]
 [  3.00000000e+00   1.19200000e+03   6.00000000e+00]]
<class 'numpy.ndarray'>