栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

一篇文章带你了解numpy

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一篇文章带你了解numpy

numpy
import numpy as np
创建
l = [[1,2,3],[4,5,6],[7,8,9]]

array = np.array(l, dtype= np.int8) # 根据任意序列型数据生成数组, dtype指定数据类型, 减少占用内存

array = array.reshape((3,3))  # 把数组转换为2*5数组,前提数据量相同

array = np.asarray(l)  # 尝试转换为数组

array = np.arange(0, 10, 2, dtype=np.float64)# (类似range生成一维数组)

array = np.zeros((3, 3, 3))  # 生成3 * 3 * 3的0数列

array = np.zeros_like(array)  # 生成类似array的0数列

array = np.ones((2, 5))# 生成2 * 5的1数列

array = np.ones_like(array)  # 生成类似array的1矩

array = np.full((2,5),5)  # 生成2*5的值为4的数列

array = np.full_like(array,5)  # 生成类似array的值为4的数列

array = np.eye(5)  # 生成阶数为5的单位阵

随机
np.random.seed(n)  # 设定随机数种子(依据种子生成随机数序列)

np.random.shuffle(array)  # 随机排列序列

np.random.normal(2,3)  2x3正态(高斯)分布数列

np.random.beta(2,3)  2x3beta分布数列

np.random.chisquare(2,3)  2x3卡方分布数列

np.random.gamma(2,3)  2x3伽马分布数列

np.random.uniform(2,3)  2x3均匀[0,1)分布数列

array = np.random.randn(3, 3, 3)  # 3*3*3的标准(均值0方差1)正态分布数列

array = np.random.choice([1,2,3],3,replace=false)  # 从一维数列中随机选择3个元素replace=false值不重复

array = np.random.rand((3,3,3))  # 生成3*3*3的随机[0,1)的正态分布数列

array = np.random.randint(0,5,(3,3),dtype=np.float32)  # 生成[0,5]的3*3离散数列(0,1,2,3,4,5)

array = np.random.random((3,3))  # 3*3的[0,1)连续均匀分布数列

array = np.random.binomial(4,0.6,(3,3))  # 进行4次二项分布取样,成功概率为0.6,返回成功次数. 重复3*3次,结果返回3*3数列

Ndarray属性
dimension = array.ndim  # 获取维数

shape = array.shape  # 获取数列大小(类似2*3)

dtype = array.dtype  # 获取数据格式

size = array.size  # 获取数据个数

itemSize = array.itemsize  # 获取元素大小

数组计算
a1 = np.array([[1,2,3],[4,5,6],[7,8,9]])

a2 = np.array([2,2,2])

a3 = a1+a2  # 两个数列相加,即使形状不完全一样也可以计算,但必须有行数或列数相同

a3 = a1*5

数字n代表要操作那个维度的数据,不填就是操作左右数据,0就是把0维度的当作一个单位操作

mean = a1.mean(n)  # 求对应维度的平均值 0代表操作[1,2,3],[4,5,6],[7,8,9]这三个和的平均值,然后降一个维度

sum = a1.sum(n) # 求对应维度的和 1代表[1,2,3],[4,5,6],[7,8,9] 三个分别求和

std = a1.std(n)  # 标准差

var = a1.var(n)  # 方差

max = a1.max(n)  # n不填最大值,填n表示求n维元素的最大值

min = a1.min(n)  # 最小值

argmin = a1.argmin(n)  # 最小值位置

argmax = a1.argmax(n)  # 最大值位置

from numpy import cumsum,cumpord

consumed = a1.cumsum(n) # 从0开始累计和

cumpord = a1.cumpord(n)  # 从1开始累计积

& | ^

累积和
numpy.cumsum(a, axis=None, dtype=None, out=None)
axis=0,按照行累加。
axis=1,按照列累加。
axis不给定具体值,就把numpy数组当成一个一维数组。

矩阵运算
a = np.array([[1,2,3],[4,5,6]])

b = np.array([[6,23],[-1,7],[8,9]])

c = a.dot(b)  # 矩阵a*b; 2x3 dot 3x2

c = np.dot(a,b)

a.diag()  获取对角元素返回一维数组,或者把一维数组转换对角阵

a.trace()  对角元素和

array.det()  计算矩阵行列式

a.eig() 计算特征值和特征向量

a.inv()  逆矩阵

a.pinv()  矩阵的伪逆

a.qr()  计算qr分解

a.svd() 计算奇异值分解

a.solve() 求解ax = b 的x

a.lstsq() qiuax=b的最小二乘解

转置
二维

a = np.arange(18).reshape(6,3)

a.t

多维

b = np.arange(24).reshape(2,3,4)

a.transpose()

布尔数组
a = array([for i in random.choice([0,1])])

a.any()  # 是否包含true,或是否全为false

a.all()  $ 是否全为true,或是否包含false

集合操作
unique = np.unique(a1)  # 找到唯一值,并排序

in1d = np.in1d(array,[1,2,3])  # 判断array中元素是否在[1,2,3]中,返回布尔数组

union1d = np.nuion1d(array1,array2)  # 返回1和2的并集,并排序

intersection1d = np.intersection1d(array1,array2)  # 交集

setdiff1d = np.diff1d(array1,array2)  在1中不在2中的

setxor1d = np.setxor1d(array1,array2)  属于1或2,但不属于1和2交集的

排序
a = np.array([3,2,5,6,1])
a.sort(n)  排序
比较
< > <= >= == !=
a = [-1,2,0,4,-2]
b = np.where(a>0,1,0)  # 对位>0,赋值1,否则赋值0
c = [1,2,3,4]
d = [5,6,7,8]
e = np.where(a>0,c,d)  # 对位>0,对位赋值c,否则对位赋值d, a也可以为布尔数组
合并
a = np.concatenate((a,b),axis=0)  # 列方向合并a,b  axis=1 行方向合并 axis代表合并的维度0->第0个维度
查找赋值
a = [-1,2,0,4,-2]
b = np.where(a>0,1,0)  # 对位>0,赋值1,否则赋值0
c = [1,2,3,4]
d = [5,6,7,8]
e = np.where(a>0,c,d)  # 对位>0,对位赋值c,否则对位赋值d, a也可以为布尔数组(np.where(a,c,d))则true对位赋值c,false对位赋值d
切片
a = array[0:5:2]  # 获取前5个间隔为2
a = array[[0,3,2]]  # 获取第一行,第四行,第三行
a = array[[0,2],2:5,2]  # 获取第一个和第三个元素的,第3到第5个元素的,第3个元素
a = array[0][1]  # 获取0行的第2个元素
a = array[...]  # 自适应补全索引  [...,2] 取最后一个维度的第二个元素
布尔索引
a = np.array([1,2,3,4,5,6]) [0,0,0,0,1,1]
b = np.arange(18).reshape(6,3)
c = b[a>4]

a>4 生成一个布尔数组,在用布尔索引b,即true对应的行

[[12 13 14]

[15 16 17]]

花式索引
a = np.arange(18).reshape(6,3)
a[[3,4,5,2],[1,0,2,1]]

代表[a[3,1],a[4,0],a[5,2],a[2,1]]  [10 12 17  7]

转置
二维

a = np.arange(18).reshape(6,3)

a.t

多维

b = np.arange(24).reshape(2,3,4)

a.transpose()

通用函数 一元
abs(绝对值),fabs(非复数,绝对值)

sign(符号)

exp(e的次方)

log,log10,log2,log1p

ceil(向上取整),floor(向下取整),rint(四舍五入)

modf(拆分成整数和小数两个部分)

isnan(是否是nan值)

isfinite(是否有穷,除nan,inf无穷),isinf(是否无穷)

sin,arcsin,sinh,arcsinh,cos,arccos,cosh,arccosh,tan,arctan,tanh,arctanh

二元
power(a,b)  a的b次方

maixmum(a,b) 对位比较最大值) ,fmax 对位比较最大值,忽略nan

minimum 对位比较最小值 ,fmin

mod  取余

copysign(a,b) 把b的符号赋给a

logical_and,logical_or,logical_not,logical_xor  对位元素做逻辑(and与,or或,nor非,xor异或)运算

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/757955.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号