第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以有效的方式將字典中的所有項(xiàng)目作為參數(shù)傳遞

以有效的方式將字典中的所有項(xiàng)目作為參數(shù)傳遞

絕地?zé)o雙 2022-01-05 11:23:37
我有一個包含十個 Pandas 數(shù)據(jù)幀的 dict,我想使用 Numpy 堆疊這些數(shù)據(jù)幀。我可以這樣做的一種方法是鍵入:tensor = numpy.stack((dict[0],dict[1],...,dict[9]),axis=0)但是,隨著字典中項(xiàng)目數(shù)量的增加,這變得非常令人厭煩。有沒有辦法一次傳遞字典的所有項(xiàng)目,而不是像上面那樣手動輸入每個元素?以下使用解包的嘗試給了我一個“TypeError: stack() 關(guān)鍵字必須是字符串”錯誤:tensor = numpy.stack(**dict,axis=0)什么是解決此問題的有效且 Pythonic 的方法?
查看完整描述

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]])


查看完整回答
反對 回復(fù) 2022-01-05
?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個贊

您收到 TypeError 的原因是您的字典鍵不是字符串。

您可以嘗試將您的值傳遞給np.stack()using dict.values()。

tensor = np.stack(dict.values(), axis = 0)


查看完整回答
反對 回復(fù) 2022-01-05
  • 2 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號