2016-03-22 19 views
1

İki matrisin bir nokta ürününü hesaplamak istiyorum, bunlardan biri çapraz bir matris. Ancak, tam matrisi oluşturmak için np.diag veya np.diagflat'u kullanmak istemiyorum, ancak bunun yerine doğrudan çapraz değerlerle dolu 1D dizisini kullanın. Bu tür bir problem için kullanabileceğim herhangi bir yol var mı?köşegen matrisli nokta ürünü, tam matris oluşturmadan

x = np.arange(9).reshape(3,3) 
y = np.arange(3) # diagonal elements 
z = np.dot(x, np.diag(y)) 

ve

z = x ??? y 
+1

Basit yayınla 'broadcasting': 'x * y' ile kullanın. – Divakar

+0

Teşekkürler !!!!!!!!! – Sebastian

cevap

4

np.diag Doğrudan çalışacak senin vektör tarafından ndarray çarparak olmadan aradığım çözüm olmalıdır. Numpy, x'in y sütununu y'nizin element elementi ile çarpmak istediğinizi varsayar.

x = np.random.random((5, 5) 
y = np.random.random(5) 

diagonal_y = np.diag(y) 
z = np.dot(x, diagonal_y) 
np.allclose(z, x * y) # Will return True 
+0

Teşekkürler! Bunu bilmiyordum! – Sebastian

İlgili konular