numpy库

求和相关

使用求和函数sum([axis=0|1]),根据参数不同可实现不同求和方式。

矩阵整体数据的求和运算

使用无参求和函数,可实现对矩阵整体数据的求和运算。

from numpy import mat
sample = mat([[1, 2], [3, 4]]
sample.sum()

执行结果:python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵

矩阵按列求和运算

求和函数参数axis=0时,可实现矩阵按列求和运算。

from numpy import mat
sample = mat([[1, 2], [3, 4]]
sample.sum(axis=0)

执行结果,返回求和结果的行向量python求矩阵绝对值的和 python 矩阵求和_最小值_02

矩阵按行求和运算

求和函数参数为axis=1时,可实现矩阵按行求和运算。

from numpy import mat
sample = mat[[1, 2], [3, 4]]
sample.sum(axis=1)

执行结果,返回求和结果的列向量python求矩阵绝对值的和 python 矩阵求和_最小值_03

求取最大/最小值

使用求取值最大函数max([axis=0|1])/最小值函数min([axis=0|1]),可求取矩阵中/行中/列中最大元素,参数意义参照求和函数,不再赘述。

求取矩阵特征值、特征向量

from numpy import mat, linalg
a = mat([[2, 3], [2, 1]])
c, d = linalg.eig(a)
print('特征值:' + c)
print('特征向量:' + d)

执行结果:python求矩阵绝对值的和 python 矩阵求和_特征向量_04
python求矩阵绝对值的和 python 矩阵求和_特征向量_05
特征值python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵_06的特征向量为python求矩阵绝对值的和 python 矩阵求和_特征向量_07

元素复制

tile函数可以将原数据向不同维度方向复制。

import numpy as np
a = np.mat([1, 2], [3, 4])
b = np.tile(a, (3, 2))
print(b)

执行结果:python求矩阵绝对值的和 python 矩阵求和_特征值_08
将原始数据python求矩阵绝对值的和 python 矩阵求和_特征向量_09的第一维度数据复制3次,将第二维度数据复制2次得到。

统计矩阵中某元素出现次数

通过numpy.sum()函数添加相关判断条件可实现。

import numpy as np
a = np.ones((4, 4))
a[1: 3, 1: 3] = 0
print(np.sum(a == 0))

上述所构造矩阵为python求矩阵绝对值的和 python 矩阵求和_最小值_10,执行结果为:python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵_06

检索矩阵中某元素及其索引

import numpy as np
a = np.ones((4, 4))
a[1: 3, 1: 3] = 0

上述所构造矩阵为python求矩阵绝对值的和 python 矩阵求和_最小值_10,下面使用不同的方法检索该矩阵中的元素。

1.numpy.where()

numpy.where()函数可分别获取在各个维度上,符合标准的相关元素的索引。该函数的返回结果出发点为数据的维度。
该函数返回结果为python求矩阵绝对值的和 python 矩阵求和_特征值_13个一维行向量,python求矩阵绝对值的和 python 矩阵求和_特征值_13为查询矩阵的维度,每个向量中的值代表在该维度下的索引。比如在第一维度下有向量python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵_15,则代表查询到4个符合条件的值,这4个元素在第一维度下的索引分别为python求矩阵绝对值的和 python 矩阵求和_特征值_16

np.where(a == 0)

在本例中构造了一个二维矩阵,因此运行结果返回python求矩阵绝对值的和 python 矩阵求和_特征向量_17个一维向量,运行结果:python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵_18,分别提取数据在各个维度的索引,即可定位数据的索引。由此可知公有python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵_06个符合条件的数据,其索引(坐标)分别为python求矩阵绝对值的和 python 矩阵求和_最小值_20python求矩阵绝对值的和 python 矩阵求和_特征向量_21 python求矩阵绝对值的和 python 矩阵求和_特征值_22

2.numpy.argwhere()

与上述方法不同的是,numpy.argwhere()函数返回为符合条件的元素在各个维度上的索引。该函数的返回结果出发点为元素。
该函数返回结果为python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵_23python求矩阵绝对值的和 python 矩阵求和_特征值_13维行向量,python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵_23为符号条件的元素个数,python求矩阵绝对值的和 python 矩阵求和_特征值_13为查询矩阵的维度。比如当前返回结果为python求矩阵绝对值的和 python 矩阵求和_特征向量_27,返回两个3维行向量,则表示符合标准的有2个元素,其中第一个元素在各个维度的索引(即坐标)为python求矩阵绝对值的和 python 矩阵求和_最小值_28,第二个元素在各个维度上的索引为python求矩阵绝对值的和 python 矩阵求和_特征值_29

np.argwhere(a == 0)

本例中构造了一个二维矩阵,符合条件的有python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵_06个元素,因此运行结果返回python求矩阵绝对值的和 python 矩阵求和_python计算判断矩阵_06个二维行向量,运行结果:python求矩阵绝对值的和 python 矩阵求和_特征值_32,每一个行向量都是一个符合要求的元素在各个维度上的索引(坐标)。

获取矩阵非零元素索引

numpy.nonzero(x)返回非零元素在各个维度上的索引,等价于numpy.where(x == 0)

import numpy as np
a = np.mat([[1, 2], [0, 4]])
indices_nonzero = np.nonzero(a)
print(indices_nonzero)

所构造矩阵为python求矩阵绝对值的和 python 矩阵求和_最小值_33
执行结果:python求矩阵绝对值的和 python 矩阵求和_最小值_34,则可知有在矩阵python求矩阵绝对值的和 python 矩阵求和_特征值_35中有3个非零元素,其坐标索引分别为python求矩阵绝对值的和 python 矩阵求和_特征值_36

sklearn库

官方API文档:https://scikit-learn.org/stable/modules/classes.html

数据预处理

sklearn.preprocessing包含数据缩放、归一化、二值化等方法。

归一化

MinMaxScaler([feature_range=(m, n), copy=true])fearete_range描述转化数据的范围,默认值(0, 1)copy是否复制原数据,默认值true

from numpy import mat
from sklearn.preprossing import MinMaxScaler
data = mat([[1, 2], [3, 4], [5, 6]])
scaler = MinMaxScaler(feature_range=(0, 1)).fit(data)
newData = scaler.transform(data)
print(newData)

执行结果,返回归一化后矩阵:python求矩阵绝对值的和 python 矩阵求和_特征向量_37

svm分类器

sklearn.svm模块包含支持向量机算法。

from sklearn.svm import SVC
svm = SVC(kernel='rbf', C=1.0, random_state=0, gamma='auto')
svm.fit(traingData, traingLabel)
svm.predict(testData)