亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

使用對象值的 Numpy 數組

使用對象值的 Numpy 數組

白衣染霜花 2023-06-27 17:32:46
我有一個對象 -> {0: 0.8, 1: 0.2, 2: 0, 3: 0}我想將其轉換為 numpy 數組,其中鍵是索引,值是數組的值 -> [0.8, 0.2, 0, 0]最快、最有效的方法是什么?我正在使用 for 循環,但是有更好的方法嗎?
查看完整描述

5 回答

?
慕妹3146593

TA貢獻1820條經驗 獲得超9個贊

keys,items并且values是從字典中獲取“內容”的最快方法。否則你必須迭代鍵。允許跳過索引和無序索引的通用方法:


In [81]: adict = {0: 0.8, 1: 0.2, 2: 0, 3: 0}                                                        

In [82]: keys = list(adict.keys())                                                                   

In [83]: arr = np.zeros(max(keys)+1)    # or set your own size                                                                 

In [84]: arr[keys] = list(adict.values())                                                            

In [85]: arr                                                                                         

Out[85]: array([0.8, 0.2, 0. , 0. ])


查看完整回答
反對 回復 2023-06-27
?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

假設你的字典叫做dict

numpy_array = np.array([*dict.values()])


查看完整回答
反對 回復 2023-06-27
?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

如果輸入字典未排序或缺少值的解決方案:


d = {1:1.1, 2:2.2, 0: 0.8, 4:4.4}

sz = 1+max(d.keys())   # or len(d) if you are sure there are no missing values 

x = np.full(sz, np.nan)

x[list(d.keys())] = list(d.values())

x

#array([0.8, 1.1, 2.2, nan, 4.4])


查看完整回答
反對 回復 2023-06-27
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

字典本質上是無序的。您需要根據鍵對值進行排序(假設您的字典中沒有丟失的鍵):


a = {0: 0.8, 1: 0.2, 2: 0, 3: 0}

np.array([i[1] for i in sorted(a.items(), key=lambda x:x[0])])

另一種方法是在 numpy 中排序:


b = np.array(list(a.items()))

b[b[:,0].argsort()][:,1]

輸出:


[0.8, 0.2, 0, 0]


查看完整回答
反對 回復 2023-06-27
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

上面的答案給出了 dict_values,但方向正確


正確的方法是:


d = {0: 0.8, 1: 0.2, 2: 0, 3: 0}

np_array = np.array(list(d.values()))


查看完整回答
反對 回復 2023-06-27
  • 5 回答
  • 0 關注
  • 239 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號