python怎么矩阵的秩_NumPy对于轴(axis)和秩(rank)的理解

轴(axis):保护数据的维度,数组最外围的维度axis=0

矩阵(二维数组)

第一轴(axis=0)是矩阵的列操作

第二轴(axis=1)是矩阵的行操作

三维数组

第三轴(axis=2)为图像矩阵的通道

秩(rank):轴的数量,即数组的维度

上面的看不懂不要急,看看例子就会懂了

np.sum(array, axis=None)函数表示对数组array进行求和(默认axis=None),可通过修改参数axis达到对数组array不同轴的操作。

eg:np.sum(a2,axis=0)对数组a2的第一轴(axis=0)求和

对于二维数组a2(3,4)

a2=np.arange(12).reshape(3,4)

a2

Out:

array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]])

np.sum(a2,axis=0)

Out: array([12, 15, 18, 21])

# ps:12=0+4+8, 15=1+5+9, 18=2+6+10, 21=3+7+11

np.sum(a2,axis=1)

Out: array([ 6, 22, 38])

# ps:6=0+1+2+3, 22=4+5+6+7, 38=8+9+10+11

总结一下

axis=0的结果为(axis, 4) 大小为四的一维数组,值为(0, i) + (1, i) + (2, i)

axis=1的结果为(3, axis) 大小为三的一维数组,值为(i, 0) + (i, 1) + (i, 2) + (i, 3)

它的秩的值为2(二维数组,共有两个轴)

对于三维数组 a(2,3,4)

array([[[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]],

[[12, 13, 14, 15],

[16, 17, 18, 19],

[20, 21, 22, 23]]])

np.sum(a,axis=0)

# 对a数组第一轴求和

Out:

array([[12, 14, 16, 18],

[20, 22, 24, 26],

[28, 30, 32, 34]])

# ps:12=0+12,14=1+13,16=2+14,18=3+15

# 20=4+16,...

# 28=8+28, ...

np.sum(a,axis=1)

# 对a数组第二轴求和

Out:

array([[12, 15, 18, 21],

[48, 51, 54, 57]])

# ps:12= 0+ 4+ 8, 15= 1+ 5+ 9, 18= 2+ 6+10, 21= 3+ 7+11

# 48=12+16+20, ...

np.sum(a,axis=2)

Out:

array([[ 6, 22, 38],

[54, 70, 86]])

# ps: 6= 0+ 1+ 2+ 3, 22= 4+ 5+ 6+ 7, 38= 8+ 9+10+11

# 54=12+13+14+15, ...

总结一下

axis=0的结果为(axis, 3, 4) 三行四列的矩阵,值为(0, i, j) + (1, i, j)

axis=1的结果为(2, axis, 4) 二行四列的矩阵,值为(i, 0, j) + (i, 1, j) + (i, 2, j)

axis=2的结果为(2, 3, axis) 二行三列的矩阵,值为(i, j, 0) + (i, j, 1) + (i, j, 2) + (i, j, 3)

它的秩的值为3(共有三个轴,维度为三)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是您所需的代码: 矩阵相加: ```python matrix1 = [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24], [25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36]] matrix2 = [[36, 35, 34, 33, 32, 31], [30, 29, 28, 27, 26, 25], [24, 23, 22, 21, 20, 19], [18, 17, 16, 15, 14, 13], [12, 11, 10, 9, 8, 7], [6, 5, 4, 3, 2, 1]] result = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]] for i in range(len(matrix1)): for j in range(len(matrix1[0])): result[i][j] = matrix1[i][j] + matrix2[i][j] print("矩阵相加的结果:") for r in result: print(r) ``` 矩阵乘积: ```python matrix1 = [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24], [25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36]] matrix2 = [[36, 35, 34, 33, 32, 31], [30, 29, 28, 27, 26, 25], [24, 23, 22, 21, 20, 19], [18, 17, 16, 15, 14, 13], [12, 11, 10, 9, 8, 7], [6, 5, 4, 3, 2, 1]] result = [[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]] for i in range(len(matrix1)): for j in range(len(matrix2[0])): for k in range(len(matrix2)): result[i][j] += matrix1[i][k] * matrix2[k][j] print("矩阵乘积的结果:") for r in result: print(r) ``` 矩阵秩: ```python import numpy as np matrix1 = [[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24], [25, 26, 27, 28, 29, 30], [31, 32, 33, 34, 35, 36]] matrix2 = [[36, 35, 34, 33, 32, 31], [30, 29, 28, 27, 26, 25], [24, 23, 22, 21, 20, 19], [18, 17, 16, 15, 14, 13], [12, 11, 10, 9, 8, 7], [6, 5, 4, 3, 2, 1]] matrix = np.concatenate((matrix1, matrix2), axis=0) rank = np.linalg.matrix_rank(matrix) print("矩阵的秩为:", rank) ``` 希望这些代码能够帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值