Error: data type must provide an itemsize?

Error: data type must provide an itemsize?

我已经研究这段代码一段时间了,这个错误以前从未出现在 m 方程中!!我不知道为什么,但我认为 Anaconda 中有一些东西。 r_1 和 r_2 是位置向量,每个向量有 3 个值,t_1 和 t_2 是每个位置的时间。 m 应该给一个数字。

import numpy as np
from numpy import *
r_1=[]
for i in range(3):
    v=input("Elemnts1:  ")
    r_1 = append(r_1,v)
print(r_1)
r_2=[]
for i in range(3):
    v=input("Elemnts2:  ")
    r_2 = append(r_2,v)
print(r_2)
Delta_theta=float(input("Delta_theta="))
t_1=float(input("t_1="))
t_2=float(input("t_2=")) 
Delta_t= t_2 - t_1

def orbit_determination(r_1,r_2,Delta_theta,Delta_t):
    mu=398600.0
    r1_mag=np.linalg.norm(r_1)
    r2_mag=np.linalg.norm(r_2)
    m=(mu*(Delta_t)**2)/(2*np.sqrt(np.dot(r_1,r_2))*np.cos(Delta_theta/2))**3


m=(mu*(Delta_t)**2)/(2*np.sqrt(np.dot(r_1,r_2))*np.cos(Delta_theta/2))**3
ValueError: data type must provide an itemsize

r_1=[]
for i in range(3):
    v=input("Elemnts1:  ")
    r_1 = np.append(r_1,v)
print(r_1)

应该是

r_1=[]
for i in range(3):
    v=input("Elemnts1:  ")
    r_1.append(v)
r_1 = np.array(r_1, dtype=float)
print(r_1)

使用列表追加,将字符串输入的结果转换为数字。

如果您仍然遇到错误,请显示带有回溯的完整错误,以便我们(和您)知道错误发生的位置。如果它出现在一个长表达式中(如 m),请将其分成更小的部分以更好地识别问题。