python数组自增_Python连载|Numpy系列(上)

原标题:Python连载|Numpy系列(上)

Numpy是使用Python进行科学计算的基础软件包,它提供了高效的大数据数组处理能力和许多线性计算的内置函数,可见其重要性不言而喻。那么本期先给大家介绍一下Numpy的利器–数组及数组运算。

a = np.array([[ 1],[ 2],[ 3]])

b = np.array([[ 1, 2, 3],[ 4, 5, 6],[ 7, 8, 9]])

a + b

其广播过程可以用下图来描述

python数组自增_Python连载|Numpy系列(上)

2.3 自增和自减运算符

当对变量的值进行自增与自减,需要使用+=或-=运算符。当你想修改数组元素的值而不想生成新数组时,就可以使用它们

a = np.arange( 5)

a += 3

print(a) # [3 4 5 6 7]

a -= 2

print(a) # [1 2 3 4 5]

a *= 3

print(a) # [ 3 6 9 12 15]

2.4 唯一化与集合运算

NumPy提供了一些针对一维ndarray的基本集合运算。最常用的就是np.unique了,它用于找出数组中的唯一值并返回已排序的结果。

a = np.array([[ 3, 7, 5, 5, 5, 3, 9, 9]])

# a中的唯一元素

print(np.unique(a)) # [3 5 7 9]

此外,还有如下集合运算函数

函数

描述

intersect1d(x,y)

计算x和y中的公共元素,并返回有序结果

union1d(x,y)

计算x和y的并集,并返回有序结果

in1d(x,y)

得到一个表示“x的元素是否包含于y”的布尔型数组

setdiff1d(x,y)

集合的差,即元素在x中且不在y中

setxor1d(x,y)

集合的对称差,即存在于一个数组中但不同时存在于两个数组中的元素

代码演示:

a = np.array([ 3, 8, 4, 6, 8, 5])

b = np.array([ 1, 2, 6, 5, 8])

# a与b的公共元素

print(np.intersect1d(a,b)) # [5 6 8]

# a与b的并集

print(np.union1d(a,b)) # [1 2 3 4 5 6 8]

# a的每个元素是否存在与b中

print(np.in1d(a,b)) # [False True False True True True]

# a与b的差

print(np.setdiff1d(a,b)) # [3 4]

# a与b的对称差

print(np.setxor1d(a,b)) # [1 2 3 4]

3. 矩阵3.1 创建矩阵

一般我们可以通过np.mat或者np.matrix方法来创建矩阵

m = np.mat([[ 1, 2, 3],[ 4, 5, 6]])

print(type(m)) # numpy.matrix

m2 = np.matrix([[ 1, 2, 3],[ 4, 5, 6]])

print(type(m2)) # numpy.matrix

此外,NumPy中包含了一个矩阵库numpy.matlib,该模块中的函数返回的是一个矩阵,而不是 ndarray 对象。

函数

描述

matlib.empty

返回一个新的矩阵

matlib.zeros

创建一个以 0 填充的矩阵

matlib.ones

创建一个以 1 填充的矩阵

matlib.eye

返回一个对角线元素为 1,其他位置为零的矩阵

matlib.identity

返回给定大小的单位矩阵

matlib.rand

函数创建一个给定大小的矩阵,数据是随机填充的

代码演示:

print( “2*3矩阵:n”,np.matlib.empty(( 2, 3)))

print( “2*3矩阵:n”,np.matlib.zeros(( 2, 3)))

print( “2*3矩阵:n”,np.matlib.ones(( 2, 3)))

print( “3*4矩阵:n”,np.matlib.eye(n = 3, M = 4, k = 0, dtype = float))

print( “大小为 5,类型为浮点型的矩阵:n”,np.matlib.identity( 5, dtype = float))

print( “3*3随机填充数据矩阵:n”,np.matlib.rand( 3, 3))

输出结果

2* 3矩阵:

[[ 4.24399158e-3148.48798317e-3141.27319747e-313]

[ 1.69759663e-3132.12199579e-3132.54639495e-313]]

2* 3矩阵:

[[ 0.0.0.]

[ 0.0.0.]]

2* 3矩阵:

[[ 1.1.1.]

[ 1.1.1.]]

3* 4矩阵:

[[ 1.0.0.0.]

[ 0.1.0.0.]

[ 0.0.1.0.]]

大小为 5,类型为浮点型的矩阵:

[[ 1.0.0.0.0.]

[ 0.1.0.0.0.]

[ 0.0.1.0.0.]

[ 0.0.0.1.0.]

[ 0.0.0.0.1.]]

3* 3随机填充数据矩阵:

[[ 0.681549250.83888520.2949826]

[ 0.963048090.279172410.08094938]

[ 0.653578310.24164510.93637365]]

3.2 矩阵运算

Numpy提供了线性代数函数库linalg,该库包含了线性代数所需的所有功能

函数

描述

diag

返回方阵的对角线元素,或将一维数组转换为方阵

dot

返回两个数组的点积

inner

两个数组的内积

matmul

两个数组的矩阵积

linalg.det

计算矩阵的行列式

linalg.inv

计算矩阵的乘法逆矩阵

trace

计算对角线元素的和

linalg.eig

计算方阵的本征值和本征向量

linalg.pinv

计算矩阵的Moore-Penrose伪逆qr计算QR分解

linalg.solve

求解线性矩阵方程Ax=b,其中A为一个方阵

linalg.svd

计算奇异值分解(SVD)

linalg.lstsq

计算Ax=b的最小二乘解

代码演示:

a = np.array([ 1, 2, 3])

b = np.array([[ 2, 3, 4],[ 5, 8, 9],[ 9, 6, 1]])

”’array是一个一维数组时,返回一个以一维数组为对角线元素的矩阵”’

print(np.diag(a))

# 输出结果:

[[ 100]

[ 020]

[ 003]]

”’array是一个二维矩阵时,结果输出矩阵的对角线元素”’

print(np.diag(b))

# 输出结果:[2 8 1]

a = np.array([ 2, 5, 3, 4])

b = np.array([ 1, 8, 2, 2])

”’a和b都是一个一维数组时,返回向量的点积”’

print(np.dot(a,b))

# 输出结果:56

a = np.array([[ 1, 2],[ 3, 4]])

b = np.array([[ 2, 8],[ 3, 2]])

”’a和b都是二维矩阵时,返回矩阵的乘法运算”’

print(np.dot(a,b))

# 输出结果:

[[ 812]

[ 1832]]

”’计算矩阵a和b的内积”’

print(np.inner(a,b))

# 输出结果:

[[ 187]

[ 3817]]

”’计算矩阵积,这里与dot一样”’

print(np.matmul(a,b))

# 输出结果:

[[ 812]

[ 1832]]

”’计算行列式”’

print(np.linalg.det(a))

# 输出结果:-2.0000000000000004

”’计算a的逆”’

print(np.linalg.inv(a))

# 输出结果:

[[ -2.1.]

[ 1.5-0.5]]

”’计算a对角线的和”’

print(np.trace(a))

# 输出结果:5

”’计算本征值和本征向量”’

print(np.linalg.eig(a))

# 输出结果:

(array([ -0.37228132, 5.37228132]), array([[ -0.82456484, -0.41597356],

[ 0.56576746, -0.90937671]]))

”’奇异分解”’

print(np.linalg.svd(a))

# 输出结果:

(array([[ -0.40455358, -0.9145143],

[ -0.9145143, 0.40455358]]), array([ 5.4649857, 0.36596619]), array([[ -0.57604844, -0.81741556],

[ 0.81741556, -0.57604844]]))

”’计算a 的伪逆矩阵”’

print(np.linalg.pinv(a))

# 输出结果:

[[ -2.1.]

[ 1.5-0.5]]

”’求解ax=b”’

print(np.linalg.solve(a,b))

# 输出结果:

[[ -1.-14.]

[ 1.511.]]

至此,本次分享已结束如果你喜欢的话,可以转发或者点个“在看”支持一下~点击原文链接,可以下载《Python工具代码速查手册》,可以点个star支持一下哦~

简介:浩彬老撕 好玩的数据炼丹师, 曾经的IBM数据挖掘攻城狮, 还没开始就过气数据科学界的段子手, 致力于数据科学知识分享,不定期送书活动 返回搜狐,查看更多

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树科学计算基础软件包NumPyNumPy概述209485 人正在系统学习中 相关资源:减压孔板计算软件v1.1免费绿色版-其它代码类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月12日
下一篇 2021年1月12日

相关推荐