python - 错误:数据类型必须提供项目大小?
问题描述
我一直在研究这段代码,这个错误以前从未出现在 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
),请将其分解为更小的部分以更好地识别问题。
推荐阅读
- c++ - 何时建议在 c++ 中使用`size_t` 进行数组声明或迭代?
- python - 将此嵌套 JSON 转换为 pandas 数据框
- scala - 跨过滤器/服务链传递通用请求标识符以登录 Finagle/Scala 的最佳方式是什么?
- pandas - Pandas 格式(在输出中添加 ':')
- json - python解析多个键
- java - 根据变量的值对变量进行分类
- node.js - 带有 node.js 的对话流中的 Bigquery ML
- docker - 使用 GCP 部署 docker 私有镜像到计算引擎实例
- java - 调试器中的变量在它应该改变的时候并没有改变,但是创建了一个相同值的“手表”并且这个改变了
- python - 如果 kwargs 参数为空,如何删除它?