如何將 numpy 陣列a設定為字典字典中的三個串列集,one, two, three就像下面的預期輸出一樣?
import numpy as np
set_names = np.array(['one', 'two', 'three'])
a = np.array([12,4,2,45,6,7,2,4,5,6,12,4])
dictionary = dict(zip(set_names, np.array_split(a, 3)))
預期輸出:
{'one': array([12, 45, 2, 6]),
'three': array([4, 6, 4, 12]),
'two': array([2, 7, 5, 4])}
uj5u.com熱心網友回復:
Numpy有reshape方法可以重塑給定的陣列:
注意:當您對矩陣進行整形時,輸出和輸入矩陣的總元素必須相等。這就是為什么您必須計算新形狀,或者您可以將其-1用作 reshape 的其他值。它將計算適合的值。
您可以使用以下方法重塑陣列:
a.reshape((3, -1))
輸出:
[[12 4 2 45]
[ 6 7 2 4]
[ 5 6 12 4]]
但這不是你要找的。讓我們將其設為 3 列:
a.reshape((-1, 3))
輸出:
[[12 4 2]
[45 6 7]
[ 2 4 5]
[ 6 12 4]]
乍一看你可能看不出來。但這就是你想要的。但作為列。現在我們可以得到transpose矩陣:
np.transpose(a.reshape((-1, 3)))
輸出:
[[12 45 2 6]
[ 4 6 4 12]
[ 2 7 5 4]]
最后但并非最不重要的是做你的字典:
import numpy as np
set_names = np.array(['one', 'two', 'three'])
a = np.array([12, 4, 2, 45, 6, 7, 2, 4, 5, 6, 12, 4])
dictionary = dict(zip(set_names, np.transpose(a.reshape((-1, 3)))))
輸出:
{'one': array([12, 45, 2, 6]), 'two': array([ 4, 6, 4, 12]), 'three': array([2, 7, 5, 4])}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/352449.html
