[英]Create diagnoal matrix from rows of a matrix in tensorflow
你可以試試這個:
e_1 = np.array([1,2,3])
e_2 = np.array([4,5,6])
e_3 = np.array([7,8,9])
M = [e_1, e_2, e_3]
# output = np.hstack(np.eye(e_1.shape[0])[:,:,None] * M)
output = np.hstack(np.eye(len(M))[:,:,None] * M)
輸出:
array([[1., 2., 3., 0., 0., 0., 0., 0., 0.],
[0., 0., 0., 4., 5., 6., 0., 0., 0.],
[0., 0., 0., 0., 0., 0., 7., 8., 9.]])
開箱:
>>> np.eye(e_1.shape[0])
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
>>> np.eye(e_1.shape[0])[..., None]
array([[[1.],
[0.],
[0.]],
[[0.],
[1.],
[0.]],
[[0.],
[0.],
[1.]]])
np.hstack
水平連接數組。
np.eye
返回給定形狀的單位矩陣。
np.array()[..., None] 為數組添加了另一個維度。 這相當於np.newaxis
,也可以通過np.expand_dims
實現。
編輯: len(M)
將確保輸出中的行數等於輸入向量的數量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.