数据的维度
纬度:一组数据的组织形式,即数据间的关系,表达数据含义。简单来说就是,一个输入(如甲)其中包含的属性(如身高,体重,年龄等),包含的属性即维度。
百度百科
维度(Dimension),又称为维数,是数学中独立参数的数目。在物理学和哲学的领域内,指独立的时空坐标的数目。0维是一个无限小的点,没有长度。1维是一条无限长的线,只有长度。2维是一个平面,是由长度和宽度(或部分曲线)组成面积。3维是2维加上高度组成体积。4维分为时间上和空间上的4维,人们说的4维经常是指关于物体在时间线上的转移。(4维准确来说有两种。1.四维时空,是指三维空间加一维时间。2.四维空间,只指四个维度的空间。)四维运动产生了五维。
从广义上讲:维度是事物“有联系”的抽象概念的数量,“有联系”的抽象概念指的是由多个抽象概念联系而成的抽象概念,和任何一个组成它的抽象概念都有联系,组成它的抽象概念的个数就是它变化的维度,如面积。此概念成立的基础是一切事物都有相对联系。
numpy库
numpy是一个开源的Python科学技术基础。主要提供功能有:
1.提供一个强大的n维数组对象ndarray;
2.提供广播功能函数,用于数组间计算;
3.整合c/c++/Fortran代码的工具;
4.提供线性代数,傅里叶变换,随机数生成等功能。
数组对象:ndarray
数组对象可以去掉元素间运算所需要的循环,使一维向量更像单个数据,简化程序员对数据的处理。利用计算优化,提高运算速度。采用相同的数据类型有利于节约储存空间。
ndarray由两部分组成:
1.实际的数据
2.描述这些数据的元数据(如数据纬度、数据类型等)
ndarray对象的属性
属性 | 说明 |
---|---|
.ndim | 秩,数据的维度 |
.shape | 对象的尺寸,每个维度的尺寸 |
.size | 元素的个数 |
.dtype | 元素类型 |
.itemsize | 每个元素的大小,以字节为单位 |
numpy相关函数
函数 | 说明 |
---|---|
.array | 根据给定数据产生一个ndarray对象 |
.arange(n) | 返回ndarray类型,元素从0到n-1 |
.ones(shape) | 根据shape(元组类型)生成一个全1ndarray类型 |
.zeros(shape) | 根据shape生成一个全0数组 |
.full(shape,val) | 根据shape生成一个全是val的数组 |
.eye(n) | 创建一个正方的n*n单位矩阵,对角线为1,其余为0的数组 |
.linspace(start,stop,spacing) | 生成一个等差数列(起始位,截止位,个数) |
.ones_like(a) | 根据数组a的形状生成一个全1的数组 |
.zeros_like(a) | 根据a的形状生成全0数组 |
.full_like(a,val) | 根据a的形状生成一个全val的数组 |
.concatenate() | 将两个或多个数组合并生成一个新的数组 |
.reshape(shape) | 不改变元素,创建一个shape形状的数组 |
.resize(shape) | 不改变元素,修改数组形状为shape形状 |
.salades(ax1,ax2) | 将数组n个维度中两个维度进行调换 |
.flatten() | 对数组进行降维处理,原数组不变 |
.ravel() | 使多维数组成为一维 |
.transpose() | 计算矩阵的转置 |
.copy() | 深度复制 |
.tolist() | 转换成数组 |
.abs(x) | 计算数组各元素的绝对值 |
.sqrt(x) | 计算数组各元素的平方根 |
.square(x) | 计算数组各元素的平方 |
.log(x) | 计算数组各元素的对数 |
.ceil(x) | 计算数组各元素的ceiling值 |
.floor(x) | 计算数组各元素的floor值 |
.rint(x) | 各元素四舍五入值 |
.modf(x) | 将数组各元素的小数和整数部分以两个独立数组形式返回 |
.cos(x).sin(x).tan(x) | 各元素的三角函数 |
.exp(x) | 各元素的指数值 |
.sign(x) | 各元素的符号值 |
.random.rand(matsize) | 在一个尺寸为matsize的数组中,产生0到1之间的平均分布随机数 |
.random.randn(matsize) | matsize数组中,产生以0为均值的单位方差的高斯随机数 |
.random.normal(mean,stdev, | |
matsize) | matsize数组中,产生指定均值和方差的高斯随机数 |
.random.uniform(low,high,matsize) | matsize数组中,产生low带high之间的平均分布随机数 |
.random.normal(loc,scale,size) | size型状正态分布数组,loc均值,scale标准差 |
.random.poisson(lam,size) | size型状泊松分布,lam随机事件发生概率 |
.random.randint(low,high,matsize) | matsize数组中,产生low到high之间的随机数 |
.random.seed(s) | 随机种子 |
.random.shuffle(a) | 根据数组a的第1轴进行随机排列,改变数组a |
.random.permutation(a) | 根据数组a的第1轴进行随机排列,不改变数组a |
.random.choice(a[,size,replace,p]) | 从一维数组a中以概率p抽取元素,形成suze形状的新数组,replace表示是否可以重用元素,默认false |
.random.sum(a,axis=none) | 根据给定轴axis计算数组a元素和 |
.random.mean(a,axis=none) | 根据给定轴axis计算数组a元素期望 |
.random.average(a,axis=none,weights=none) | 根据给定轴axis计算数组a元素的加权平均值 |
.random.std(a,axis=none) | 根据给定轴axis计算数组a元素标准差 |
.random.var(a,axis=none) | 根据给定轴axis计算数组a元素方差 |
.linalg.inv(a) | 计算数组a的逆 |
.linalg.pinv(a) | 计算数组a的逆,即使a不是方型数组 |
.linalg.det(a) | 计算数组a的行列式的值 |
.linalg.eig(a) | 计算数组a的特征值和特征向量 |
.savetxt(frame,array,fmt=’%.18e’,delimiter=None) | 保持为csv文件,frame:文件、字符串或产生器(文件名),array:存入文件的数组,fmt:写入文件的格式,delimiter:分割字符串,默认空格 |
.loadtxt(frame,dtype=np.float,delimiter=None,unpack=False) | 读入csv文件。frame:文件名,dtype:数据类型,delimiter:分割字符串,unpack:如果是true,读入属性将分别写入不同变量 |
.tofile(frame,sep=’’,format=’%s’) | 存储多维数组,frame:文件,sep:数据分割字符串,format:写入格式 |
.fromfile(frame,dtype=float,count=-1,sep=’’) | 读取多维数据文件 |
.save(frame,array) | 便捷文件存 |
.load(frame) | 便捷文件取 |
.gradient(f) | 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度 |
*梯度:连续值之间的变化率
csv只能存取一维、二维数组
数组的操作
1.数组与标量的运算等同于数组中每一个元素与标量运算
2.数组间的运算
函数 | 说明 |
---|---|
+_*/ ** | 两个数组各元素进行对应的运算 |
.maximun(x,y).fmax().minimun(x,y).fmin() | 元素级的最大值/最小值计算 |
.mod(x,y) | 元素级的模运算 |
.copysign(x,y) | 将数组y中各元素值的符号赋值给数组x对应元素 |
><= <= == != | 算术比较,产生布尔型数组 |