斯蒂芬大帝
**dict用于接受关键字参数的函数。它将字典解包为一组key=value参数。例如:像您这样使用整数作为键的字典:In [157]: dd = {0:np.arange(3),1:np.arange(10,13)} 一个功能:In [158]: def foo(**kwargs): ...: print(kwargs) ...: 你的错误:In [159]: foo(**dd) ---------------------------------------------------------------------------TypeError Traceback (most recent call last)<ipython-input-159-965b46c2342b> in <module>----> 1 foo(**dd)TypeError: foo() keywords must be strings它不想做:foo(0=..., 1=...)。如果我使用作为有效变量名的字符串参数定义字典:In [160]: dd = {'key0':np.arange(3),'key1':np.arange(10,13)} In [161]: foo(**dd) {'key0': array([0, 1, 2]), 'key1': array([10, 11, 12])}这解释了直接错误。但这仍然无法与stack具有签名的人一起使用:np.stack(arrays, axis=0, out=None)我可以使用字典来提供关键字参数,但不能提供arrays参数:In [165]: pdict = {'axis':0, 'out':None} In [166]: alist = [np.arange(3), np.arange(10,13)] In [167]: np.stack(alist, **pdict) Out[167]: array([[ 0, 1, 2], [10, 11, 12]])回到带有数字键的字典。我可以使用.values从字典中提取数组,并将其作为列表传递给stack:In [171]: dd = {0:np.arange(3),1:np.arange(10,13)} In [172]: list(dd.values()) Out[172]: [array([0, 1, 2]), array([10, 11, 12])]In [173]: np.stack(list(dd.values())) Out[173]: array([[ 0, 1, 2], [10, 11, 12]])