Python 如何使用argparse解析矩阵输入?

Python 如何使用argparse解析矩阵输入?,python,numpy,argparse,Python,Numpy,Argparse,我是argparse的新手,我正在尝试使用它在一个命令行中输入2D矩阵(而不是单独的输入)。在argparse中输入2D矩阵的最佳方法是什么 我曾尝试使用nargs,但它只允许我输入一行数字的条目 parser = argparse.ArgumentParser(prog='PROG') parser.add_argument('-row1', action='store', type=int, nargs='+') parser.add_argument('-row2', action='st

我是argparse的新手,我正在尝试使用它在一个命令行中输入2D矩阵(而不是单独的输入)。在argparse中输入2D矩阵的最佳方法是什么

我曾尝试使用nargs,但它只允许我输入一行数字的条目

parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-row1', action='store', type=int, nargs='+')
parser.add_argument('-row2', action='store', type=int, nargs='+')
parser.add_argument('-row3', action='store', type=int, nargs='+')
args = parser.parse_args()

我希望用户指定行数,因此我不确定如何使用上述代码来动态地允许用户指定行数及其内容。

一种方法是使用参数格式
-nrows nb\u行-矩阵扩展数据数据\u 0\u 0数据\u 0\u 1数据\u 1\u 0数据\u 1\u 1…

然后你可以做:

将numpy导入为np
parser=argparse.ArgumentParser(prog='prog')
add_参数('-matrixdata',action='store',type=int,nargs='+'))
parser.add_参数('-nrows',action='store',type=int)
args=parser.parse_args()
m=np.array(args.matrixdata).重塑((args.nrows,len(args.matrixdata)//args.nrows))
打印(m)
对于
-nrows 3-matrixdata 1 2 3 4 5 6
,其给出:

[[1 2]  
 [3 4]  
 [5 6]]

我认为您的用户应该将数字放在
csv
样式的文件中,并在命令行中提供文件名。