首页 > 解决方案 > 减去两个列表,但值在 Python 中没有相加

问题描述

我要执行操作:roll_all-theta_all. 它们都lists包含两个值,结果应该列在 my 上名为“roll”的列中panda.DataFrame。但是,当我这样做时,'roll' 列的第二行值不会相加。虽然由于我在代码的其他部分执行操作而无法看到它theta_all,但我获取值的方式与获取 的值相同roll_all,即通过创建一个空list然后将值附加到它。这是我的代码:

pyr = pd.DataFrame(columns = ['pitch','yaw','roll'])

for para in GTparas:  
    Mr = np.array([[np.cos(para[2]), -np.sin(para[2]), 0],[np.sin(para[2]), np.cos(para[2]), 0],[0, 0, 1]])
    My = np.array([[np.cos(para[1]), 0, np.sin(para[1])],[0, 1, 0],[-np.sin(para[1]), 0, np.cos(para[1])]])
    Mp = np.array([[1, 0, 0],[0, np.cos(para[0]), -np.sin(para[0])],[0, np.sin(para[0]), np.cos(para[0])]])
    M1 = np.dot(Mr,My)
    M = np.dot(M1,Mp)

    pitch = np.arctan(M[2,1]/M[2,2])
    yaw = np.arctan(M[2,0]/((((M[0,0])**2)+((M[1,0])**2))**(1/2)))
    roll = np.arctan(M[1,0]/M[0,0])
    
    roll_all = []
    roll_all.append(roll)
    print(roll_all)
    c = [a - b for a, b in zip(roll_all, theta_all)]
    #c = np.array(roll_all) - np.array(theta_all)
  
    pyr = pyr.append({'pitch':pitch,'yaw':yaw,'roll':c},ignore_index = True) # from Z-Y-X to X-Y-Z
print(pyr)

我还在我的列表中附加了值,theta_all第二张图像显示了其中的值roll_all以及我在打印时得到的值pyr

theta_all 的值 theta_all 和 pyr 的值

标签: pythonpandaslist

解决方案


总结:

pyr = pd.DataFrame(columns = ['pitch','yaw','roll'])

for para,theta in zip(GTparas, theta_all):
    Mr = np.array([[np.cos(para[2]), -np.sin(para[2]), 0],[np.sin(para[2]), np.cos(para[2]), 0],[0, 0, 1]])
    My = np.array([[np.cos(para[1]), 0, np.sin(para[1])],[0, 1, 0],[-np.sin(para[1]), 0, np.cos(para[1])]])
    Mp = np.array([[1, 0, 0],[0, np.cos(para[0]), -np.sin(para[0])],[0, np.sin(para[0]), np.cos(para[0])]])
    M1 = np.dot(Mr,My)
    M = np.dot(M1,Mp)

    pitch = np.arctan(M[2,1]/M[2,2])
    yaw = np.arctan(M[2,0]/((((M[0,0])**2)+((M[1,0])**2))**(1/2)))
    roll = np.arctan(M[1,0]/M[0,0]) - theta
      
    pyr = pyr.append({'pitch':pitch,'yaw':yaw,'roll':roll},ignore_index = True) 

print(pyr)

推荐阅读