Operación de punto tensor en python

Tengo dos matrices A=[1,2,3] y B=[[1],[0],[1],[0]] . La pregunta de cómo realizar su producto de punto tensor en python. Estoy esperando obtener:

 C=[[1,2,3], [0,0,0], [1,2,3], [0,0,0]] 

La función np.tensordot () devuelve un error relacionado con las formas de los arreglos.

Una pequeña adición a esta pregunta. Cómo hacer tal operación si la matriz es de forma totalmente diferente, como:

 A=[[1,1,1,1], [1,1,1,1], [2,2,2,2], [3,3,3,3]] B=[2,1] C=[[[2,1],[2,1],[2,1],[2,1]], [[2,1],[2,1],[2,1],[2,1]], [[4,2],[4,2],[4,2],[4,2]], [[6,3],[6,3],[6,3],[6,3]]] 

Trate de usar matrices numpy correctas:

 >>> array([[1],[2],[3]]).dot(array([[1,0,1,0]])) array([[1, 0, 1, 0], [2, 0, 2, 0], [3, 0, 3, 0]]) 

Si su alineación es diferente, usar a.transpose() puede voltearla:

 >>> array([[1],[2],[3]]).dot(array([[1,0,1,0]])).transpose() array([[1, 2, 3], [0, 0, 0], [1, 2, 3], [0, 0, 0]]) 

Si usted (por cualquier razón) tiene que usar tensordot() , intente esto:

 >>> numpy.tensordot([1,2,3], [1,0,1,0], axes=0) array([[1, 0, 1, 0], [2, 0, 2, 0], [3, 0, 3, 0]]) 

No soy tan experto con este argumento, pero si intentas cambiar los ejes en números, funciona:

 A=[1,2,3] B=[[1],[0],[1],[0]] np.tensordot(B, A, axes=0) array([[[1, 2, 3]], [[0, 0, 0]], [[1, 2, 3]], [[0, 0, 0]]])