Numpy 操作矩阵

  1. 复制矩阵
m2 = m1.copy
m2 = m1[:,:]
  1. 复制矩阵的部分Row
m[1:]      #取第1行之后所有
m[-2:]     #取最后第2行之后所有(最后第2行和最后第1行)
m[1:3]     #取第1行到第3行之前(不包括第3行)
m[3:-1]    #取第3行到最后1行之前(不包括最后1行)
m[:-1]     #取第0行到最后1行之前(不包括最后1行)

需要补充的是,上面的操作,返回的是二维矩阵, shape是2维数组,例如:[3,1]
还有一种"取单行"的方法, 返回的是一维矩阵, shape是1维数组,例如:[3,] (可以通过reshape快速转换)
关于reshape可以参考: 这里

m[-1]     #取最后1行,返回的是一维矩阵,不是一个[1,n]的二维矩阵,而是1个一维矩阵[n,]
  1. 复制矩阵的部分Column
m[:, 1:]      #取第1列之后所有列
m[:, -2:]     #取最后第2列之后所有列(最后第2列和最后第1列)
m[:, 1:3]     #取第1列到第3列之前(不包括第3列)
m[:, 3:-1]    #取第3列到最后1列之前(不包括最后1列)
m[:, :-1]     #取第0列到最后1列之前(不包括最后1列)

还有一种"取单列"的方法, 返回的是一维矩阵, shape是1维数组,例如:[3,]

m[:, -1]     #取最后1列,返回的是一维矩阵,不是一个[n,1]的二维矩阵,而是1个一维矩阵[n,]
  1. 替换矩阵中的Row
#取row的2个方法
m_r1 = m[1:2] * 2 #推荐
m_r1 = m[1] * 2  #注意此时m_r1是一维矩阵[n,]

#替换row的2个方法
m[1:2] = m_r1 #这里m_r1可以是一维矩阵,也可以是二维矩阵
m[1] = m_r1 #这里m_r1可以是一维矩阵,也可以是二维矩阵

注意到在Row的情况下,我们可以直接用1个一维矩阵[n,] 和1个二维矩阵[1,n]混用。

  1. 替换矩阵中的Column
#方法1
m_c1 = m[:, 1:2] * 2
m[:, 1:2] = m_c1
#方法2
m_c1 = m[:, 1]
m[:, 1] = m_c1

请务必注意替换Column不能混用一维矩阵和二维矩阵否则会报错:

#出错信息见下图:
mc1 = m[:, 1:2] * 2
m[:, 1] = mc1

在这里插入图片描述

个人不喜欢这种Row与Column操作逻辑不对称的情况,不和谐,不优雅。

  1. AppendColumn到矩阵
eye = np.eye(m.shape[0])
new_m = np.c_[m, eye]      #注意m不变化
  1. AppendRow到矩阵
new_rows = np.ones(m.shape[1]).reshape(1,m.shape[1]) #注意这里必须reshape,将1维数组[n,]转为2维数组[1,n]
new_m = np.r_[m, new_rows]     #注意m不变化

下面是错误示例:

#错误示例
new_rows = np.ones(m.shape[1])
np.r_[m, new_rows]

在这里插入图片描述
9. Insert 矩阵

a = np.array([
    [1,2],
    [3,4],
    [5,6]])
b = np.array([
    [11,14],
    [12,15],
    [13,16]
])
np.insert(a,1, np.transpose(b) ,axis = 1) #将b插入到a的第一列, axis = 1表示插入列向量
#同时注意必须把b转置

#输出
array([[ 1, 11, 14,  2],
       [ 3, 12, 15,  4],
       [ 5, 13, 16,  6]])
  1. 批量删除指定行
np.delete(m, indexs, axis = 0)

posted on   norsd  阅读(2)  评论(0编辑  收藏  举报  

相关博文:
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示