![](/img/trans.png)
[英]How can I create an array based on values from different array Python Numpy
[英]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.