目录

  • numpy库
  • 数据维度的python表示
  • 数组对象ndarray
  • 数组创建与变换
  • 数组变换
  • 数组操作
  • 数组运算
  • numpy数据存取
  • csv文件存储
  • 案例1:使用下面代码生成一个csv文件[^1]
  • csv文件读取
  • 案例2:使用loadtxt()函数读取一个csv文件
  • 多维数据存取
  • 案例3:存储并读取一个包含维数据的文件
  • 随机数函数
  • 案例4:使用随机数函数生成随机数组
  • 统计函数
  • 案例5:使用统计函数进行计算
  • 梯度函数
  • 案例6:梯度函数小测


numpy库

开源的科学计算基础库

数据维度的python表示

一维数组

python在机械行业能做什么 机械 python_numpy

二维数据

python在机械行业能做什么 机械 python_随机数_02

多维数据

python在机械行业能做什么 机械 python_随机数_03

高维数据

python在机械行业能做什么 机械 python_numpy_04

数组对象ndarray

数据对象特点

  1. 数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据
  2. 设置专门的数组对象,可以提升这类应用的运算速度
  3. 数组采用相同的数据类型,有利于节省运算和储存空间

关于ndarray

  1. ndarray是一个多维数组对象,由两部分构成
    (1)实际的数据
    (2)描述这些数据的元数据(数据维度、数据类型等等)
  2. ndarray数组要求所有数据类型相同,数据下标从0开始
  3. 在程序中,ndarray的别名是array
  4. np.array()将数组输出为[ ]形式,元素之间由空格分开
    轴(axis)用于保存数据的维度
    秩(rank)轴的数量

ndarray对象的属性

属性

描述

.ndim


.shape

对象的形状,对应矩阵的n行m列

.size

对象元素的个数

.dtype

对象中元素类型

.itemsize

对象中每个元素的大小,以字节为单位

ndarray对象的意义

  1. 去掉元素间运算所需的循环,使得一维向量更像单个数据
  2. 数组对象采用相同的数据类型,有助于节省运算和存储空间

数组创建与变换

创建方法

  1. 利用列表、元组等类型创建ndarray

python在机械行业能做什么 机械 python_数组_05

  1. 使用numpy中的函数创建

函数

描述

numpy.arange(n)

返回ndarray类型,元素从0到1

ones(shape)

生成一个全1的数组,

zeros(shape)

生成一个全0的数组

full(shape,val)

根据shape生成一个数组,每个元素都是val

eye(n)

生成一个正方n*n的单位矩阵,对角线为1,其余为0

ones_like(a)

根据a的形状生成一个全1的数组

zeros_like(a)

根据a的形状生成一个全0的数组

full_like(a,val)

根据a的形状生成一个每个元素都是val的数组

python在机械行业能做什么 机械 python_数组_06

  1. 其他方法创建

函数

描述

linspace()

根据起止数据等间距填充数据形成数组

concatenate()

将两个或多个数组合并成一个新的数组

python在机械行业能做什么 机械 python_python在机械行业能做什么_07

数组变换

对于创建后的数组进行维度变换或元素类型变换
维度变换

方法

描述

reshape(shape)

不改变数组元素,返回一个shape形状的数组,不改变原数组

resize(shape)

与reshape功能相同,改变原数组

swapaxes(ax1,ax2)

将数组两个维度调换

flatten()

对数组降维,返回折叠后的一维数组,原数组不变

下面我们来看看这些方法的作用

python在机械行业能做什么 机械 python_python在机械行业能做什么_08

类型转换

函数

描述

.astype(newtype)

创建新的数组,数据相同,类型也可能相同

.tolist()

数组向列表转换

从下面的例子中我们可以看出,转换数组元素的类型时并未改变原数组,此外,如果参数newtype使用numpy中的数据类型时未知名精度,程序会提出警告

python在机械行业能做什么 机械 python_随机数_09

下面我们生成一个列表

python在机械行业能做什么 机械 python_python在机械行业能做什么_10

数组操作

索引和切片

一维数组索引

python在机械行业能做什么 机械 python_python在机械行业能做什么_11


多维数组索引

python在机械行业能做什么 机械 python_数据_12

多维数组切片

python在机械行业能做什么 机械 python_随机数_13

数组运算

数组与标量之间的运算

数组中的每一个元素参与运算

python在机械行业能做什么 机械 python_numpy_14

一元函数
对数组中的数据执行元素级运算

函数

描述

np.abs(x) /np.fabs(x)

求数组x各元素的绝对值

np.sprt(x)

求数组x中各元素平方根

np.square(x)

各元素平方

np.logn(x)(n为底数)

求各元素对数值

np.ceil(x)

求各元素ceiling值

np.rint(x)

各元素四舍五入的值

np.modf(x)

将各元素小数部分和整数部分分为两个独立的数组返回

np.sin()/cos()…

各元素的三角函数值

np.exp(x)

各元素指数值

np.sign(x)

各元素符号值,-1(-),0,1(+)

python在机械行业能做什么 机械 python_数组_15

二元函数
两个数组之间的元素运算

函数描述

+、-、*、/、**

两个数组各元素对应进行运算

np.copysign(x,y)

将y中各元素符号赋值给数组x对应的元素

<、>、<=、>=、!=、==

算术比较,产生布尔类型

np.mod(x,y)

元素级模运算

python在机械行业能做什么 机械 python_numpy_16

numpy数据存取

csv文件存储

语法格式:np.savetxt(frame,array,format,delimiter)

参数

描述

frame

文件(可以是压缩文件),字符串或产生器

array

存入文件的数组

format

写入文件的格式,如%d,%f

delimiter

分割字符串,默认空格

案例1:使用下面代码生成一个csv文件1

python在机械行业能做什么 机械 python_数组_17

打开文件我们可以看到里面的数据

python在机械行业能做什么 机械 python_数组_18

csv文件读取

语法格式[^2]:np.loadtxt(frame,dtype,delimiter,unpack)

参数

描述

frame

文件(可以为压缩文件),字符串或产生器

dtype

数据类型

delimiter

分割字符串

unpack

为True时,读入变量被写入不同属性

[^2]:注意:

1, csv只能有效存储一维和二维数据

2, np中的存储和读取函数都只能有效存储一维和二维数据

案例2:使用loadtxt()函数读取一个csv文件

python在机械行业能做什么 机械 python_数据_19

多维数据存取

多维数据存储
语法格式:array.tofile(frame,sep,format)

参数名

描述

frame

文件,字符串

seq

分割字符串

format

写入文件的数据格式,如%d

多维数据读取
语法格式:np.fromfile(frame,dtype,count,sep)

参数

描述

frame

文件,字符串

dtype

读取数据类型

count

读入元素个数

sep

数据分割字符串

这种方法存取时需要知道存入文件时数组的维度和元素类型[^3]

[^3]:多维数据存储(tofile()函数)和读取方法(fromfile()函数)需要配合使用,可以通过元数据文件来存储额外信息

案例3:存储并读取一个包含维数据的文件

python在机械行业能做什么 机械 python_数组_20

随机数函数

np.random的随机数函数

函数

描述

rand(d0,d1,…dn)

根据d0-dn创建随机数数组,浮点数,范围[0,1),均匀分布

randn(d0,d1…dn)

根据d0-dn创建随机数函数,正态分布

ranint(low,high,shape)

根据shape创建随机整数,范围为(low,high)

seed(s)

随机数种子s

shuffle(a)

根据数组第一个轴随机排列,改变原数组

permutation(a)

根据数组第一个轴随机排列,不改变原数组

choice(a[,size,replace,p])

从一维数组中以概率p抽取元素,形成size形状的新数组,replace代表是否可以重用元素,默认Flase

uniform(low,high,size)

产生具有均匀分布的数组,范围(low,high),size代表形状

normal(loc,scale,size)

产生具有正态分布的数组,loc代表均值,scale代表标准差,size代表形状

poisson(lam,size)

产生具有泊松分布的数组,lam代表随机事件发生率,size代表形状

案例4:使用随机数函数生成随机数组

python在机械行业能做什么 机械 python_随机数_21


下面我们对生成的数组进行变化

python在机械行业能做什么 机械 python_数组_22


下面我们分别生成具有均匀分布和正态分布特征的数组

python在机械行业能做什么 机械 python_数据_23

统计函数

函数

描述

sum(a,axis)

根据axis 计算数组a中相关元素之和

mean(a,axis)

根据axis计算数组a相关元素期望

average(a,axis,weights)

根据axis计算数组a相关元素加权平均值

std(a,axis)

根据axis计算数组a相关元素标准差

var(a,axis)

根据axis计算数组a相关元素方差

min(a)/max(a)

计算数组中的最小/最大元素

argmin(a)/argmax(a)

数组中最小/最大元素降一维对应的下标

unravel_index(index,shape)

将一维坐标转换为多维shape状

ptp(a)

数组中最小和最大元素数值之差

median(a)

数组中元素的中位数

案例5:使用统计函数进行计算

python在机械行业能做什么 机械 python_python在机械行业能做什么_24


下面我们尝试获得数组中的最小和最大值

python在机械行业能做什么 机械 python_numpy_25

梯度函数

函数

描述

np.gradient(f)

计算数组f中元素的梯度,当f为多维,返回每个维度的梯度1

1:梯度是连续值之间的变化率,即斜率

案例6:梯度函数小测

python在机械行业能做什么 机械 python_数组_26


  1. 注意因为我们要将生成的数据保存为csv的表格形式,所以在设置表格的shape切不可大于二维,否则将报错:‘Expected 1D or 2D array, got 3D array instead’ ↩︎ ↩︎ ↩︎