首页 > 解决方案 > 错误:数据类型必须提供项目大小?

问题描述

我一直在研究这段代码,这个错误以前从未出现在 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

标签: pythonvisual-studionumpytypesanaconda

解决方案


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),请将其分解为更小的部分以更好地识别问题。


推荐阅读