Python---关于对于矩阵行列元素的提取与修改问题

目录

问题描述:

步骤一:提取所需要的元素,并扩大形成一个新的矩阵。

步骤二:为了重新补回到原来矩阵当中,需要将步骤一得到的矩阵再增加一行。

步骤三:列替换


问题描述:

        处理一个四行四列的矩阵如下图所示,并对矩阵中的第四列前三行元素进行修改扩大为1000倍,并将修改后的内容重新添加回原来矩阵中。

改变后的结果如下:

步骤一:提取所需要的元素,并扩大形成一个新的矩阵。

T_cam2obj_1 = T_cam2obj[[0,1,2]]
T_cam2obj_1 = T_cam2obj_1[:,[3]]*1000

        提取原矩阵中第四列、第一到三行的的元素,并将获取得到的元素扩大1000倍,得到了一个新的矩阵。结果如下图所示。

步骤二:为了重新补回到原来矩阵当中,需要将步骤一得到的矩阵再增加一行。

        使用row_stack和column_stack增加行与列的操作。

增加行,结果如下所示:

增加列,结果如下所示:

 本部分的代码如下:

a = np.array([1]).reshape(1,1)
T_cam2obj_2 = np.row_stack((T_cam2obj_1,a))
print("T_cam2obj_2: \n{}".format(T_cam2obj_2))
b = np.array([[0,0,0],[0,0,0],[0,0,0],[0,0,0]])
T_cam2obj_3 = np.column_stack((b,T_cam2obj_2))
print("T_cam2obj_3: \n{}".format(T_cam2obj_3))

步骤三:列替换

将原来矩阵T_cam2obj的第四行用我们所需要的处理好的数据替换。如下图所示。

代码如下:

T_cam2obj = np.array(T_cam2obj) # 解决opencv图像所形成矩阵不能读取问题:ValueError: assignment destination is read-only
T_cam2obj[:,3] = T_cam2obj_3[:,3]# 替换
print("T_cam2obj-1: \n{}".format(T_cam2obj))
np.savetxt("config/T_cam2obj-correction.txt", T_cam2obj, fmt='%.3f', delimiter=",")

你可能感兴趣的:(Python学习,python,list)