python - numpy 数组的 ArgumentParser

标签 python arrays numpy argparse

有没有办法为 np.array 而不是列表添加参数到 ArgumentParser ? 我知道我可以做这样的事情

import argparse
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-foo', action='store', type=int, nargs='+')
args = parser.parse_args(['-foo', '1', '2'])
args.foo = np.array(args.foo)

但我想在解析之前指定参数的完整描述。

有办法做到这一点吗?

最佳答案

要指定 StoreAction 操作处理程序工作方式的细微变化,您需要创建一个 subclass进行适当更改的处理程序(文档在上面 this section 有一个示例)

import argparse, numpy as np

class Store_as_array(argparse._StoreAction):
    def __call__(self, parser, namespace, values, option_string=None):
        values = np.array(values)
        return super().__call__(parser, namespace, values, option_string)

parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-foo', action=Store_as_array, type=int, nargs='+')
                                  # ^ specify as the action 
args = parser.parse_args(['-foo', '1', '2'])

assert isinstance(args.foo, np.ndarray)

关于python - numpy 数组的 ArgumentParser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37755273/

相关文章:

c++ - 在 C++ 中将变量参数列表序列化为字节数组的最佳方法?

php json_encode 不返回任何内容

python - Conda 骨架 pypi 因 pmdarima 而失败——AttributeError numpy disutils

Python 代理应用程序

python - 将 Mozilla Marionette Web 驱动程序与 Selenium 结合使用时如何禁用 Web 驱动程序异常

java - 在java中创建一个数组,其中值随机排序

python - 属性错误 : 'module' object has no attribute 'to_rgb'

Python numpy 平均

python - 如何修改数据框以便每行存储其重复行的所有数据?

python - Flask部署