Numpy 操作矩阵
- 复制矩阵
m2 = m1.copy
m2 = m1[:,:]
- 复制矩阵的部分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,]
- 复制矩阵的部分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,]
- 替换矩阵中的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]混用。
- 替换矩阵中的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操作逻辑不对称的情况,不和谐,不优雅。
- AppendColumn到矩阵
eye = np.eye(m.shape[0])
new_m = np.c_[m, eye] #注意m不变化
- 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]])
- 批量删除指定行
np.delete(m, indexs, axis = 0)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能