
Hi, I would appreciate it, if Numpy could handle the Kronecker-product of two matrices X, Y. kron(X,Y) is the Kronecker tensor product of X and Y. The result is a large matrix formed by taking all possible products between the elements of X and those of Y. If X is m-by-n and Y is p-by-q, then kron(X,Y) is m*p-by-n*q. Nils

Using the outer product you get a matrix that has the right size and contents but it is m*n by p*q Was that a misprint in your post?
-----Original Message----- From: numpy-discussion-admin@lists.sourceforge.net [mailto:numpy-discussion-admin@lists.sourceforge.net]On Behalf Of Nils Wagner Sent: Wednesday, July 18, 2001 4:10 AM To: numpy-discussion@lists.sourceforge.net Subject: [Numpy-discussion] Kronecker product Hi, I would appreciate it, if Numpy could handle the Kronecker-product of two matrices X, Y. kron(X,Y) is the Kronecker tensor product of X and Y. The result is a large matrix formed by taking all possible products between the elements of X and those of Y. If X is m-by-n and Y is p-by-q, then kron(X,Y) is m*p-by-n*q. Nils _______________________________________________ Numpy-discussion mailing list Numpy-discussion@lists.sourceforge.net http://lists.sourceforge.net/lists/listinfo/numpy-discussion

"Paul F. Dubois" schrieb:
a
array([[1, 2], [3, 4]])
b
array([[11, 12], [13, 14]])
outerproduct(a,b)
The Kronecker product applied to A,B is kron(A,B) = array([[11,12,22,24], [13,14,26,28], [33,36,44,48], [39,42,52,56]]) How can I rearrange the result of outerproduct to the result of Kronecker product with numpy ? Cheers, Nils

import Numeric def kron(x, y): return Numeric.multiply.outer(x, y)
OK, there's one difference: the function shown about returns an array of shape (m, n, p, q). If the input arrays are always 2D, the following will do what you need: import Numeric def kron(x, y): z = Numeric.transpose(Numeric.multiply.outer(x, y), [0, 2, 1, 3]) z.shape = (z.shape[0]*z.shape[1], z.shape[2]*z.shape[3]) return z Konrad. -- ------------------------------------------------------------------------------- Konrad Hinsen | E-Mail: hinsen@cnrs-orleans.fr Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.56.24 Rue Charles Sadron | Fax: +33-2.38.63.15.17 45071 Orleans Cedex 2 | Deutsch/Esperanto/English/ France | Nederlands/Francais -------------------------------------------------------------------------------

Using the outer product you get a matrix that has the right size and contents but it is m*n by p*q Was that a misprint in your post?
-----Original Message----- From: numpy-discussion-admin@lists.sourceforge.net [mailto:numpy-discussion-admin@lists.sourceforge.net]On Behalf Of Nils Wagner Sent: Wednesday, July 18, 2001 4:10 AM To: numpy-discussion@lists.sourceforge.net Subject: [Numpy-discussion] Kronecker product Hi, I would appreciate it, if Numpy could handle the Kronecker-product of two matrices X, Y. kron(X,Y) is the Kronecker tensor product of X and Y. The result is a large matrix formed by taking all possible products between the elements of X and those of Y. If X is m-by-n and Y is p-by-q, then kron(X,Y) is m*p-by-n*q. Nils _______________________________________________ Numpy-discussion mailing list Numpy-discussion@lists.sourceforge.net http://lists.sourceforge.net/lists/listinfo/numpy-discussion

"Paul F. Dubois" schrieb:
a
array([[1, 2], [3, 4]])
b
array([[11, 12], [13, 14]])
outerproduct(a,b)
The Kronecker product applied to A,B is kron(A,B) = array([[11,12,22,24], [13,14,26,28], [33,36,44,48], [39,42,52,56]]) How can I rearrange the result of outerproduct to the result of Kronecker product with numpy ? Cheers, Nils

import Numeric def kron(x, y): return Numeric.multiply.outer(x, y)
OK, there's one difference: the function shown about returns an array of shape (m, n, p, q). If the input arrays are always 2D, the following will do what you need: import Numeric def kron(x, y): z = Numeric.transpose(Numeric.multiply.outer(x, y), [0, 2, 1, 3]) z.shape = (z.shape[0]*z.shape[1], z.shape[2]*z.shape[3]) return z Konrad. -- ------------------------------------------------------------------------------- Konrad Hinsen | E-Mail: hinsen@cnrs-orleans.fr Centre de Biophysique Moleculaire (CNRS) | Tel.: +33-2.38.25.56.24 Rue Charles Sadron | Fax: +33-2.38.63.15.17 45071 Orleans Cedex 2 | Deutsch/Esperanto/English/ France | Nederlands/Francais -------------------------------------------------------------------------------
participants (3)
-
Konrad Hinsen
-
Nils Wagner
-
Paul F. Dubois