簡體   English   中英

NumPy:我可以創建一個僅包含 dict 數組中的值的數組嗎?

[英]NumPy: Can I create an array of just the values from an array of dicts?

所以我有一個二維數組,其中每個元素都是一個字典,如下所示:

[[{"key":"value"},{"key":"othervalue"}],
[{"key":"notvalue"},{"key":"value"}]]

我試圖用它來創建第二個數組,其中每個元素都基於第一個數組字典的值,所以它看起來像這樣:

[[True, True]
[False, True]]

甚至這個:

[["value","othervalue"]
["notvalue","value"]]

但是我終生無法弄清楚如何獲取字典中的值。 現在我正在這樣做:

results=numpy.where((old_array=={"key":"value"}) | (old_array=={"key":"othervalue"}))
for i in zip(results[0], results[1]):
    new_array[i[0],i[1]]=True

...但我覺得必須有比這更好的方法。 是否有一些不錯的、簡潔的函數可以與我完全缺少的字典數組一起使用? 或者這只是一個我不得不笨拙地通過的?

提前致謝!

In [263]: arr =np.array([[{"key":"value"},{"key":"othervalue"}],
     ...: [{"key":"notvalue"},{"key":"value"}]])
In [264]: arr
Out[264]: 
array([[{'key': 'value'}, {'key': 'othervalue'}],
       [{'key': 'notvalue'}, {'key': 'value'}]], dtype=object)

簡單的列表理解方法:

In [266]: [d['key'] for d in arr.ravel().tolist()]
Out[266]: ['value', 'othervalue', 'notvalue', 'value']

一個不錯的選擇,雖然不是更快:

In [267]: np.frompyfunc(lambda d:d['key'],1,1)(arr)
Out[267]: 
array([['value', 'othervalue'],
       ['notvalue', 'value']], dtype=object)

對象 dtype 數組實際上是列表,存儲引用,而不是特殊的 numpy 對象。 並且dict只能通過key索引(或items/values )訪問。 numpy不添加任何特殊的dict處理代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM