app开发者平台在数字化时代的重要性与发展趋势解析
914
2022-11-26
python numpy
数据维度的python表示 一维数据:列表和集合类型 二维数据;列表类型 多位数据:列表类型 高维数据:字典类型或数据表示格式(json,xml,yaml)
NumPy库功能 提供一个n维数组对象ndarray 广播功能函数 整合C/C++/Fortran代码的工具 线性代数、傅里叶变换、随机数生成等功能
ndarray数组 ndarray是一个多维数组对象,由两部分构成: 1、实际的数据 2、描述这些数据的元数据(数据维度、数据类型等)
ndarray数组一般要求所有元素类型相同,数组下标从0开始 ndarray在numpy中的别名是array,可以用np.array()生成一个ndarray数组轴(axis):表示数据的维度秩(rank):轴的数量
ndarray对象的属性
.ndim | 秩,即轴的数量或维度的数量 |
.shape | ndarray对象的尺度,对于矩阵,n行m列 |
.size | ndarray对象元素的个数,相当于.shape中的n*m的值 |
.dtype | ndarray对象的元素类型 |
.itemsize | ndarray对象中每个元素的大小,以字节为单位 |
import numpy as npa = np.array([[0, 1, 2, 3, 4], [9, 8, 7, 6, 5]])结果: a.ndim --> 2a.shape --> (2, 5)a.size --> 10a.dtype --> dtype('int32')a.itemsize --> 4
ndarray的元素类型
bool | 布尔类型True或False |
intc | 与c语言中int类型一致,一般是int32或int64 |
intp | 用于索引的整数,与C语言中ssize_t一致,int32或int64 |
int8 | 8位长度的整数,取值:[-128, 127] |
int16 | 16位长度的整数,取值:[-32768, 32767] |
int32 | 32位长度的整数 |
int64 | 64位长度的整数 |
uint8 | 8位无符号整数[0,255] |
uint16 | 16位无符号整数 |
uint32 | 32位无符号整数 |
uing64 | 64位无符号整数 |
float16 | 16位半精度浮点数 |
float32 | 32位半精度浮点数 |
float64 | 64位半精度浮点数 |
complex64 | 复数类型,实部和虚部都是32位浮点数 |
complex128 | 复数类型,实部和虚部都是64位浮点数 |
ndarray数组的创建方法1、从python中的列表、元祖等类型创建ndarray数组np.array(list/tuple, [dtype=np.float32]) 注意:元组和列表可以混合使用。x = np.array([[1, 2], [9, 8], (0.1, 0.2)])2、使用numpy中函数创建ndarray数组
np.arange(n) | 类似range函数,返回ndarray类型,元素从0到n-1 |
np.ones(shape) | 根据shape生成一个全1数组,shape是元组类型 |
np.zeros(shape) | 根据shape生成一个全0数组,shape是元组类型 |
np.full(shape, val) | 根据shape生成一个数组,每个元素值都是value |
np.eye(n) | 创建一个正方的n*n单位矩阵,对角线为1,其余为0 |
np.ones_like(a) | 根据数组a的形状生成一个全1数组 |
np.zeros_like(a) | 根据数组a的形状生成一个全0数组 |
np.full_like(a, value) | 根据数组a的形状生成一个数组,每个元素值都是value |
np.linspace() | 根据起止数据等间距 地填充数据,形成数组 |
np.concatenate() | 将两个或多个数组合并成一个新的数组 |
3、从字节流中创建4、从文件中读取特定格式
ndarray数组维度变换
np.reshape(shape) | 不改变数组元素,返回一个shape形状的数组,原数组不变 |
np.resize(shape) | 与np.reshape功能一致,但是修改原数组 |
np.swapaxes(ax1, ax2) | 将数组n个维度中两个维度进行调换 |
np.flatten() | 对数组进行降维,返回折叠后的一维数组,原数组不变 |
ndarray数组的元素类型变换
np.astype(new_type) | 创建新数组,元素类型变为new_type |
ndarray数组类型转换
ls = x.tolist() | ndarray数组向list转变 |
ndarray数组的操作 1、索引:获取数组中特定位置元素的过程 2、切片:获取数组元素子集的过程
一维数组的索引和切片:与python列表类似多维数组的索引和切片:逗号分隔每个维度,冒号表示所有维度多维数组的索引:每个维度取对应的索引x = np.arange(24).reshape((2, 3, 4)) x[1, 2, 3]–>23多维数组的切片:每个维度取对应的索引 x[:, 1, 2]–>array([ 6, 18])
numpy一元运算函数
np.abs(x),np.fabs(x) | 计算数组各元素的绝对值 |
np.sqrt(x) | 计算数组各个元素的平方根 |
np.square(x) | 计算数组各个元素的平方 |
np.log(x), np.log10(x), np.log2(x) | 各个元素自然对数,10,2为底的对数 |
np.ceil(x), np.floor(x) | 各元素的ceiling或floor值 |
np.rint(x) | 四舍五入值 |
np.modf(x) | 将各元素的小数和整数部分以两个独立数组形式返回 |
np.cos(x), np.sin(x), np.tan(x) | 三角函数值 |
np.sign(x) | 计算各元素符号值:1(+),0,-1(-) |
numpy二元运算函数
+, -, *, /, ** | 两个数组各元素进行对应计算 |
np.maximun(x, y),np.fmax(),np.minimum(x, y),np.fmin() | 元素级最大/最小值计算 |
np.mod(x, y) | 元素级模运算 |
np.copysign(x, y) | 将y中各元素值的符号赋值给数组x对应元素 |
> < >= <= == != | 算术比较,产生布尔型数组 |
csv(逗号分格值) 是一种常见的文件格式,用来存储批量数据csv只能存储一维和二维数组,即np.savetxt和np.loadtxt只能读取和存储一维和二维数组
写文件np.savetxt(fname, array, fmt="%.18e", delimiter=None) fname:文件、字符串或产生器,可以是.gz或.bz2的压缩文件 array:存入文件的数组 fmt:写入文件的格式,例如:%d, %.2f, %.18e delimiter:分隔字符串,默认是任何空格
a = np.array([1,2,3,4,5])np.savetxt("C:\\Users\\dell\\Desktop\\1\\a.csv", a, fmt="%d", delimiter=",")
读文件np.loadtxt(fname, dtype=np.float, delimiter=None, unpack=False) fname:文件、字符串或产生器,可以是.gz或.bz2的压缩文件 dtype:数据类型,可选 delimiter:分隔字符串,默认是空格 unpack:如果是True,读入属性将分别写入不同变量
b = np.loadtxt("C:\\Users\\dell\\Desktop\\1\\a.csv", delimiter=",")
多维数据的文件读取和存储a.tofile(fname, sep="", format="%s") fname:文件、字符串 sep:数据分隔字符串,如果是空串,写入文件为二进制 format:写入数据的格式
a.fromfile(fname, dtype=np.float, count=-1, sep="") fname:文件、字符串 dtype:读取的数据类型 count=读入元素个数,-1表示读入整个文件 sep:数据分隔字符串,如果是空串,写入文件为二进制
numpy便捷文件存取np.save(fname, array)或np.savez(fname, array) fname:文件名,以.npy为扩展名,压缩扩展名为.npz array:数组变量
np.load(fname)
numpy库的随机数函数子库(random)np.random的随机数函数
rand(d0,d1,…dn) | 根据d0-dn(维度)创建随机数数组,浮点数,[0,1), 均匀分布 |
randn(d0,d1,…dn) | 根据d0-dn(维度)创建随机数数组,标准正态分布 |
randint(low[,high,shape]) | 根据shape创建随机整数或整数数组,范围是[low, high] |
seed(s) | 随机数种子,s是给定的种子值 |
shuffle(a) | 根据数组a的第1轴进行随机排列,改变数组 |
permutation(a) | 根据数组a的第1轴产生一个新的乱序数组,不改变数组 |
choice(a[,size, replace,p]) | 从一维数组a中以概率p抽取元素,形成size形状新数组,replace表示是否可以重用元素,默认可重复 |
uniform(low, high, size) | 产生具有均匀分布的数组 |
normal(loc, scale, size) | 产生具有正态分布的数组,loc均值,scale标准差 |
poisson(lam, size) | 产生具有泊松分布的数组,lam为随机事件发生率 |
numpy的统计函数
sum(a, axis=None) | 根据给定轴axis计算数组a相关元素之和,axis整数或元组 |
mean(a, axis=None) | 根据给定轴axis计算数组a相关元素的期望,axis是几就是压缩第几维 |
average(a, axis=None, weights=None) | 根据给定轴axis计算数组a相关元素的加权平均值 |
std(a, axis=None) | 根据给定轴axis计算数组a相关元素的标注差 |
var(a, axis=None) | 根据给定轴axis计算数组a相关的方差 |
min(a)\max(a) | 计算数组a中元素的最小值、最大值 |
argmin(a)\argmax(a) | 甲酸数组a中元素最小值、最大值的降为一维后下标 |
unravel_index(index, shape) | 根据shape将一维下标index转换成多维下标 |
ptp(a) | 计算数组a中元素最大值与最小值的差 |
median(a) | 计算数组a中元素的中位数 |
a = np.arange(15).reshape(3, 5)>>> np.sum(a)105>>> np.sum(a, axis=1)array([10, 35, 60])>>> np.mean(a, axis=1)array([ 2., 7., 12.])>>> np.mean(a, axis=0)array([5., 6., 7., 8., 9.])
a = np.arange(24).reshape(2, 3,4)>>> np.argmax(a)23>>> np.unravel_index(np.argmax(a), a.shape)(1, 2, 3)
numpy的梯度函数
np.gradient(a) | 计算数组a中元素的梯度,当a为多维时, 返回每个维度梯度 |
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~