python之numpy(3 矩阵属性及矩阵运算)

属性

在numpy中可以显示矩阵的很多属性,如矩阵大小、元素个数、数据类型等。

python 复制代码
import numpy as np
x=np.array([
    [1,2,3,4],[1,2,3,4]
])
print(f'这个矩阵的规格为{x.shape}')
print(f'这个矩阵有{x.size}个元素')
print(f'这个矩阵的维度为{x.ndim}')
print(f'这个矩阵的数据类型为{x.dtype}')
print(f'矩阵的转置为{x.T}')

类似的属性还有很多,不再赘述。

矩阵的运算

矩阵的运算分为矩阵元素之间的运算和矩阵之间的运算,当然两者的区别在加法、减法之间是没有区别的,在乘法之间有所区别。

python 复制代码
import numpy as np
x=np.array([
    [1,2,3],[2,3,4],[3,4,5]
])
y=np.array([
    [2,3,4],[2,4,5],[2,3,2]
])
print(x*y)
print(x-y)
print(x+y)
print(x.dot(y))
print(np.dot(x,y.T))
print(np.linalg.inv(y))#逆矩阵
print(np.linalg.det(x))#行列式
print(np.linalg.matrix_rank(x))#矩阵的秩

上述代码中,x*y是对应元素之间的相乘,而矩阵之间的点乘是x.dot(y)或者是np.dot(x,y)。x.T表示x的转置。

np.linalg.inv()是求矩阵的逆,np.linalg.det()是求矩阵的行列式,np.linalg.matrix_rank是求矩阵秩。

除了矩阵之间的运算外还有一些统计运算,如求和,求平均值等。

求最值:

python 复制代码
import numpy as np
x=np.array([
    [1,2,3],[2,3,4],[3,4,5]
])
print(np.max(x))
print(np.min(x))
print(np.min(x,axis=0))
print(np.argmax(x))
print(np.argmin(x))

其中,倒数第三行中的axis=0表示每一列的最小值(axis=1表示每一行求最值),返回是一个1×3的数组。最后两行表示返回最值的索引,这个索引是一行一行排列的,从0开始。

求和:

python 复制代码
import numpy as np
x=np.array([
    [1,2,3],[2,3,4],[3,4,5]
])
print(np.sum(x,axis=0))

求均值:

python 复制代码
import numpy as np
x=np.array([
    [1,2,3],[2,3,4],[3,4,5]
])
print(np.mean(x))
m=np.average(x,weights=np.ones((3,3)))
print(m)

其中average可以求加权平均数,weights表示对x所加的权重,两者大小相同。

其他:

python 复制代码
import numpy as np
x=np.array([
    [1,2,3],[2,3,4],[3,4,5]
])
print(np.median(x))
print(np.cumsum(x))
print(np.diff(x))
print(np.nonzero(x))
print(np.sort(x))
print(np.transpose(x))
print(np.clip(x,1.4,3.5))

结果:

python 复制代码
3.0
[ 1  3  6  8 11 15 18 22 27]
[[1 1]
 [1 1]
 [1 1]]
(array([0, 0, 0, 1, 1, 1, 2, 2, 2]), array([0, 1, 2, 0, 1, 2, 0, 1, 2]))
[[1 2 3]
 [2 3 4]
 [3 4 5]]
[[1 2 3]
 [2 3 4]
 [3 4 5]]
[[1.4 2.  3. ]
 [2.  3.  3.5]
 [3.  3.5 3.5]]
请按任意键继续. . .

np.median(x) 返回中位数

np.cumsum(x) 返回逐个累加后的数

np.diff(x) 返回逐差后的数

np.nonzero(x) 返回两个数组,第一个数组是非零数的横坐标位置,第二个数组是非零数组的纵坐标位置

np.sort(x) 逐行排序,从小到大排序

np.transpose(x) 矩阵转置,等效于x.T

注:如果定义的数组是x=np.array(1,2,3)那么此函数失效,如果定义的是x=np.array( \[1,2,3 ])则可以转置。对于第一种情况可以使用reshape强制改变大小。

np.clip(x,1.4,3.5) 将数组中的元素限制在指定的最小值和最大值之间。如果数组中的元素小于最小值,则会被替换为最小值;如果元素大于最大值,则会被替换为最大值;如果元素在最小值和最大值之间(包括边界值),则保持不变。

相关推荐
apcipot_rain7 小时前
C++转Java日记(04)
java·开发语言·c++
特立独行的猫A8 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持8 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang9 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰10 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc11 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
蜗牛一步步往上爬12 小时前
第十六章 C++语言在深度学习中的应用
开发语言·c++·深度学习
羲云网络14 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
张张123y14 小时前
DSH 插件调试避坑:client.js 设置面板、热重载与高频报错排查表
开发语言·javascript·人工智能·开源·ecmascript·后端开发·ai agent
冻柠檬飞冰走茶17 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划