2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個贊
**dict用于接受關(guān)鍵字參數(shù)的函數(shù)。它將字典解包為一組key=value參數(shù)。例如:
像您這樣使用整數(shù)作為鍵的字典:
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=...)。
如果我使用作為有效變量名的字符串參數(shù)定義字典:
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)
我可以使用字典來提供關(guān)鍵字參數(shù),但不能提供arrays參數(shù):
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]])
回到帶有數(shù)字鍵的字典。我可以使用.values從字典中提取數(shù)組,并將其作為列表傳遞給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]])

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個贊
您收到 TypeError 的原因是您的字典鍵不是字符串。
您可以嘗試將您的值傳遞給np.stack()
using dict.values()
。
tensor = np.stack(dict.values(), axis = 0)
添加回答
舉報