我正在构建几个直方图,我想在命令行中传递bins参数。但是,有时候这些垃圾箱的间隔可能不均匀,所以我宁愿直接将numpy函数传递给命令,例如:
python test.py arr=np.arange(0,10,2)
或其他一些numpy数组或矩阵。我的代码可以读取=
符号后发生的情况,所以在这种情况下我有类似
kwargs['arr'] = 'np.arange(0,10,2)'
以便将其作为字符串读取。我已经检查了Can I pass a matrix as command line input in python with numpy?,但认为一切都是np.array
;我想要的是它可以是np.arange
,或只是range
,甚至是np.array
。所以如果可能的话,我更愿意让字符串按原样运行。我想避免类似
if 'np.arange' in kwargs['arr']:
# some string manipulations here
arr = np.arange(effective_str)
elif 'range' in kwargs['arr']:
# and so on
有这样的方法吗?
答案 0 :(得分:0)
所以我明白了。 eval
可以解决问题。
eval('np.arange(0,10,2)') = array([0,2,4,6,8])
我听说eval
有一些错误,所以如果有任何问题,请告诉我。
编辑:
在命令行中,您必须将np.arange(...)
放在引号中:
python test.py arr='np.arange(0,10,2)'
否则会出错。