python numpy

网友投稿 914 2022-11-26

python numpy

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小时内删除侵权内容。

上一篇:云计算复习索引
下一篇:聊聊SpringBoot的@Scheduled的并发问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~