【问题标题】:Error: data type must provide an itemsize?错误:数据类型必须提供项目大小?
【发布时间】:2021-09-11 13:46:45
【问题描述】:

我一直在研究这段代码,这个错误以前从未出现在 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、r_2、Delta_theta、t_1 和 t_2 是什么?
  • r_1 和 r_2 都是位置向量,每个向量都有 3 个值,theta 是角度,t_1 和 t_2 是在 2 位置的时间@yann ziselman
  • 他们的价值观是什么?如果没有输入和预期的输出,您的示例是不可重现的。如果愿意,请将它们添加到您的帖子中
  • 例如:Elemnts1: 4.5 Elemnts1: 2.4 Elemnts1: 7.6 ['4.5' '2.4' '7.6'] Elemnts2: 3.2 Elemnts2: 4.5 Elemnts2: 7.6 ['3.2' '4.5' '7.6'] Delta_theta=45.7 t_1=3.2 t_2=8.6 @yann ziselman
  • 好的,谢谢@yann ziselman

标签: python visual-studio numpy types anaconda


【解决方案1】:
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),请将其分解为更小的部分,以便更好地识别问题。

【讨论】:

  • 非常感谢@hpaulj
猜你喜欢
  • 2020-04-23
  • 2017-01-09
  • 2021-07-12
  • 1970-01-01
  • 2018-04-01
  • 2019-01-11
  • 1970-01-01
  • 2021-07-08
  • 2021-01-14
相关资源
最近更新 更多