将数字列表传递给Python脚本

将数字列表传递给Python脚本,python,Python,我试图将一列数字传递给Python脚本,然后将其转换为numpy数组 input.txt 42 42.4 43.5153 44 #!/usr/bin/env python3 import sys import numpy in = sys.argv[1] in_out = np.array([float(in)]) print "Inputs:" in_out sys.exit() Bash代码 python script.py ${input} Python脚本 42 42.4 4

我试图将一列数字传递给Python脚本,然后将其转换为
numpy
数组

input.txt

42
42.4
43.5153
44
#!/usr/bin/env python3
import sys
import numpy

in = sys.argv[1]

in_out = np.array([float(in)])
print "Inputs:" in_out

sys.exit()
Bash代码

python script.py ${input}
Python脚本

42
42.4
43.5153
44
#!/usr/bin/env python3
import sys
import numpy

in = sys.argv[1]

in_out = np.array([float(in)])
print "Inputs:" in_out

sys.exit()
Python错误

Traceback (most recent call last):
  File "script.py", line 8, in <module>
    in_out = np.array([float(in)])
ValueError: invalid literal for float(): 42
回溯(最近一次呼叫最后一次):
文件“script.py”,第8行,在
in_out=np.数组([float(in)])
ValueError:浮点()的文本无效:42
将numpy作为np导入
打开('input.txt')作为输入文件:
data=np.array([float(line.strip())表示输入文件中的行])
您需要将所有值强制转换为float,以便numpy在数组中只存储一个数据类型

如果要将文件作为参数提供,可以执行以下操作:

将numpy导入为np
导入系统
文件名=sys.argv[1]
打开(文件名)作为输入文件:
data=np.array([float(line.strip())表示输入文件中的行])
将numpy作为np导入
打开('input.txt')作为输入文件:
data=np.array([float(line.strip())表示输入文件中的行])
您需要将所有值强制转换为float,以便numpy在数组中只存储一个数据类型

如果要将文件作为参数提供,可以执行以下操作:

将numpy导入为np
导入系统
文件名=sys.argv[1]
打开(文件名)作为输入文件:
data=np.array([float(line.strip())表示输入文件中的行])

我认为问题在于您的
in
变量(在Python中不能是变量,但我们将使用它)是一个包含所有值的字符串。因此,您需要将其拆分并将
float
分别应用于每个:

np.array(list(map(float, in.split())))

但是我建议直接从Python中读取
input.txt
文件。

我认为问题在于
in
变量(在Python中不能是变量,但我们将使用它)是一个包含所有值的字符串。因此,您需要将其拆分并将
float
分别应用于每个:

np.array(list(map(float, in.split())))

但是我建议直接从Python中读取
input.txt
文件。

使用
np.loadtxt

Ex:

import numpy as np

in_out = np.loadtxt(filename, dtype=float)
print(in_out)
[42.     42.4    43.5153 44.    ]
输出:

import numpy as np

in_out = np.loadtxt(filename, dtype=float)
print(in_out)
[42.     42.4    43.5153 44.    ]

使用
np.loadtxt

Ex:

import numpy as np

in_out = np.loadtxt(filename, dtype=float)
print(in_out)
[42.     42.4    43.5153 44.    ]
输出:

import numpy as np

in_out = np.loadtxt(filename, dtype=float)
print(in_out)
[42.     42.4    43.5153 44.    ]

什么是和${input}中的
?我想你需要阅读文件,而不是阅读和解析文件名,请原谅我的打字错误。我已经编辑了原始问题
${input}
中的
是什么?我想你需要阅读文件,而不是阅读和解析文件名,请原谅我的打字错误。我已编辑了原始问题