我正在编写一个小代码来从 MQTT 服务器接收多个参数并使用它们来预测另一个值。我在这里展示一个简化的代码只是为了获得一些帮助。要将参数传递给脚本以执行预测,第一部分是创建一个 numpy 数组,然后使用 sys.argv[] 将参数传递给脚本,然后是索引以定位传入值。
import numpy as np
import sys
# creating empty numpy array for feature values
X = np.empty(2).reshape(1, 2)
#storing the arguments
azimuth_sin=sys.argv[1]
azimuth_cos=sys.argv[2]
#displaying the arguments
print("azimuth_sin : " + azimuth_sin)
print("azimuth_cos : " + azimuth_cos)
print("Number of arguments : ", len(sys.argv))
# set vector values
X[:,0] = sys.argv[1]
X[:,1] = sys.argv[2]
print(X)
但是,当我收到错误时,我对第二个参数有疑问:
退出代码:1,Traceback(最近一次调用):文件“numpy-array.py”,第 10 行,在 azimuth_cos=sys.argv[2] IndexError: list index out of range
避免该错误的唯一方法是如果我将两个参数都设置为:sys.arg[1]
#storing the arguments
azimuth_sin=sys.argv[1]
azimuth_cos=sys.argv[1]
#displaying the arguments
print("azimuth_sin : " + azimuth_sin)
print("azimuth_cos : " + azimuth_cos)
print("Number of arguments : ", len(sys.argv))
# set vector values
X[:,0] = sys.argv[1]
X[:,1] = sys.argv[1]
print(X)
然后我得到两个连续的输出:
azimuth_sin:-0.9152180545267792 azimuth_cos:-0.9152180545267792 参数数量:2 [[-0.91521805 -0.91521805]]
和:
azimuth_sin:0.40295894662883136 azimuth_cos:0.40295894662883136 参数数量:2 [[0.40295895 0.40295895]]
这实际上是打印的两个参数的值,但重复了两次:sin = -0.9152180545267792 和cos = 0.40295894662883136
如果我将论点放在一行中:
#storing the arguments
azimuth_sin, azimuth_cos = sys.argv[1:2]
错误是:
退出代码:1,Traceback(最近一次调用最后一次):文件“numpy-array-t1.py”,第 10 行,在 azimuth_sin,azimuth_cos = sys.argv[1:2] ValueError:没有足够的值来解包(预期 2 , 得到 1)
我已经尝试了很多方法来解决这个问题,但没有成功,我将不胜感激任何帮助或建议。先感谢您。