对一些工业设备常用计算公式实现代码化,便于系统性和批量性完成对基础数据特征值的提取,方便后续进行计算的预估性判断。
例:
代码实现:
def sy_cal_skewness_index(source):
"""
计算偏斜度指标
:param source: 源数据
:return: 偏斜度指标skewness index
"""
datas = np.array(source).astype(float)
s_avg = 0 # 内部(small)总值
m_avg = 0 # 中间部(middle)总值
ml_avg = 0 # 中间部(middle)下层(low)总值
ll_avg = 0 # 最外部(large)下层(low)总值
for data in datas:
s_avg += data
s_avg /= len(source)
for data in datas:
m_avg += pow(data - s_avg, 3)
ml_avg += pow(data - s_avg, 2)
h_avg = m_avg / (len(source) - 1)
ll_avg = pow(ml_avg / (len(source) - 1), 3 / 2)
if ll_avg == 0:
ll_avg = 0.000000001
return h_avg / ll_avg
NumPy - 简介
NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。
Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarray ,它拥有一些额外的功能。 2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。 这个开源项目有很多贡献者。
NumPy 操作
使用NumPy,开发人员可以执行以下操作:
-
数组的算数和逻辑运算。
-
傅立叶变换和用于图形操作的例程。
-
与线性代数有关的操作。 NumPy 拥有线性代数和随机数生成的内置函数。
NumPy – MatLab 的替代之一
NumPy 通常与 SciPy(Scientific Python)和 Matplotlib(绘图库)一起使用。 这种组合广泛用于替代 MatLab,是一个流行的技术计算平台。 但是,Python 作为 MatLab 的替代方案,现在被视为一种更加现代和完整的编程语言。
NumPy 是开源的,这是它的一个额外的优势。
NumPy - Ndarray 对象
NumPy 中定义的最重要的对象是称为 ndarray
的 N 维数组类型。 它描述相同类型的元素集合。 可以使用基于零的索引访问集合中的项目。
ndarray
中的每个元素在内存中使用相同大小的块。 ndarray
中的每个元素是数据类型对象的对象(称为 dtype
)。
从ndarray
对象提取的任何元素(通过切片)由一个数组标量类型的 Python 对象表示。
机器学习算法中大部分都是调用Numpy库来完成基础数值计算的。
使用前先导入Numpy模块
import numpy as np
#或
from numpy import *
1)数组的创建及使用
>>> x=np.array([[1.0,0.0,0.0],[0.,1.,2.]]) #定义了一个二维数组,大小为(2,3)
>>> x
array([[1., 0., 0.],
[0., 1., 2.]])
>>> x.ndim #数组维度数
2
>>> x.shape #数组的维数,返回的格式(n,m),其中n为行数,m为列数
(2, 3)
>>> x.size #数组元素的总数
6
>>> x.dtype #数组元素类型
dtype('float64') #64位浮点型
>>> x.itemsize #每个元素占有的字节大小
8
>>> x.data #数组元素的缓冲区
<memory at 0x00000205227DAC18>
还有两种创建序列数组的函数arrange和linspace,和range函数类似,但它们都属于Numpy里面。
arange(a,b,c) 参数分别表示开始值,结束值,步长
linspace(a,b,c) 参数分别表示开始值,结束值,元素数量
还可以调用它们自身的方法reshape()指定形状
>>> arange(15).reshape(3,5)
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14]])
>>> arange(10,30,5)
array([10, 15, 20, 25])
>>> arange(0,2,0.3)
array([0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8])
>>> linspace(0,2,9) # 0~2之间生成9个数字
array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
高斯分布(正态分布)
np.random.randn(shape):生成对应形状(shape)的高斯分布
np.random.normal(loc, scale, size):生成均值为loc,标准差为scale,形状(shape)为size的高斯分布
均匀分布
np.random.rand(shape):生成对应形状(shape)的均匀分布
np.random.uniform(low, high, size):生成一个从[low, high)中随即采样的,样本数量为size的均匀分布
>>> a = np.random.randn(10) # 长度为10的一个一维数组
>>> a
array([ 0.12939473, 0.43128511, 1.20540157, 0.54083603, 0.80768359,
-1.24217976, -0.9713093 , 1.43538807, -1.07227227, -1.27176462])
>>> b = np.random.normal(0, 1, (2,4)) # 均值为1,方差为0,形状为(2,4)的二维数组
>>> b
array([[ 0.4132305 , -2.06728849, 1.15189397, -1.11201615],
[ 0.39955198, -0.89664908, -0.61361683, -0.13166113]])
>>> c = np.random.rand(2,3) # 生成一个形状为(2,3)的均匀分布二维数组
>>> c
array([[0.57091351, 0.39960244, 0.77019683],
[0.11316102, 0.59354993, 0.37849038]])
>>> d = np.random.uniform(-1,1,10)
>>> d
array([-0.34374858, -0.27026865, 0.27073922, -0.42654097, -0.38736897,
0.16293278, -0.79578655, -0.04825995, 0.28444576, 0.99118406])
关于:
datas = np.array(source).astype(float)
astype函数用于array中数值类型转换
例如:
x = np.array([1, 2, 2.5])
x.astype(int)
输出:
array([1, 2, 2])
又例如:
arr = np.arange((10))
print(arr, arr.dtype, sep="\n")
[0 1 2 3 4 5 6 7 8 9]
int32 #可以看到,他的数据类型为 int32
arr = arr.astype("float32")
print(arr, arr.dtype, sep="\n")
[0. 1. 2. 3. 4. 5. 6. 7. 8. 9.]
float32 #可以看到数据类型转换成了 float32
常用关键字:abs(取绝对值)
abs 函数是 Python 内置函数,主要作用就是计算数字的绝对值!
'''
参数x:只能为有符号的数字,例如:0,5,6.3,-78……
返回值:直接取当前数字的绝对值,必然大于等于0,不会小于0;
'''
abs(x)
总结:
学会利用有效关键字。