python中矩陣的實現是靠序列,,,
序列有很多形式,
其實矩陣是現實生活中的東西,把現實生活中的結構轉換到程序中。
就需要有個實現的方法,而這種路徑是多種多樣的。
下面給出一個把矩陣轉換成python中的序列、
然后進行矩陣的轉置
# -*- coding: utf-8 -*-
#下面的測試是關於轉置的。
import numpy as np #NumPy
minVals=np.array([1,2,3])
print(minVals)
data=np.tile(minVals,(3,1)) #這里調用了一個numpy的一個函數tile。它的作用是把minVals按照3行1列排布
print(data)
data=data.T
print(data)
#下面是輸出結果:
[1 2 3]
[[1 2 3]
[1 2 3]
[1 2 3]]
[[1 1 1]
[2 2 2]
[3 3 3]]
#下面給一個創建矩陣,歸一化,轉置的程序:
# -*- coding: utf-8 -*- def autoNorm0(dataSet): #這部分是歸一化【】,按照行進行歸一化 """ 行的歸一化 可以看做是光譜自身的歸一化,就是光譜的高度波動變成了0-1之間。 這個需要驗證 """ minVals=dataSet.min(1) #參數0應該是代表着按行計算. print(minVals) maxVals=dataSet.max(1) ranges=maxVals-minVals #這個是范圍 normDataSet=np.zeros(np.shape(dataSet)) m=dataSet.shape[1] #這個是列數 data=np.tile(minVals,(m,1)) ranges_juzhen=np.tile(ranges,(m,1)) ranges_juzhen=ranges_juzhen.T data=data.T normDataSet=dataSet-data #因為歸一化是從0開始的,歸到0-1這個范圍里面. normDataSet=normDataSet/ranges_juzhen #特征值相除,,會不會出現浮點,或者除不盡的情況.??? return normDataSet,ranges,minVals #要弄懂返回來的這幾個參數是什么??? #下面的測試是關於轉置的。 import numpy as np #NumPy minVals=np.array([1,2,3]) print(minVals) data=np.tile(minVals,(3,1)) #把序列轉換成數組 print("矩陣:") print(data) print() normDataSet,ranges,minVals=autoNorm0(data) #歸一化 print("矩陣歸一化結果:") print(normDataSet) data=data.T #進行矩陣的轉置 print("轉置矩陣:") print(data) normDataSet,ranges,minVals=autoNorm0(data) #轉置之后進行歸一化 print("矩陣轉置后歸一化結果:") print(normDataSet)
輸出結果如下:
[1 2 3]
矩陣:
[[1 2 3]
[1 2 3]
[1 2 3]]
[1 1 1]
矩陣歸一化結果:
[[0. 0.5 1. ]
[0. 0.5 1. ]
[0. 0.5 1. ]]
轉置矩陣:
[[1 1 1]
[2 2 2]
[3 3 3]]
[1 2 3]
矩陣轉置后歸一化結果:
[[nan nan nan]
[nan nan nan]
[nan nan nan]]
D:/1論文/2018.0919/0919/program/0906/knn/ceshi.py:25: RuntimeWarning: invalid value encountered in true_divide
normDataSet=normDataSet/ranges_juzhen #特征值相除,,會不會出現浮點,或者除不盡的情況.???
