关于python中矩阵的实现和矩阵的转置
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 #特征值相除,,会不会出现浮点,或者除不尽的情况.???