2015-03-20 26 views
6

Mi piacerebbe moltiplicare due vettori, una colonna (cioè (N + 1) x1), una riga (cioè 1x (N + 1)) per dare un (N + 1) matrice x (N + 1). Sono abbastanza nuovo per Numpy, ma hanno una certa esperienza con MATLAB, questo è il codice equivalente in MATLAB per quello che voglio in Numpy:Moltiplicazione di vettori di colonne e righe in Numpy

n = 0:N; 
xx = cos(pi*n/N)'; 
T = cos(acos(xx)*n'); 

in Numpy ho provato:

import numpy as np 
n = range(0,N+1) 

pi = np.pi 
xx = np.cos(np.multiply(pi/float(N), n)) 

xxa = np.asarray(xx) 
na = np.asarray(n) 
nd = np.transpose(na) 

T = np.cos(np.multiply(np.arccos(xxa),nd)) 

I aggiunse la linea asarray dopo aver notato che senza di essa Numpy sembrava trattare xx e n come liste. np.shape(n), np.shape(xx), np.shape(na) e np.shape(xxa) dallo stesso risultato: (100001L,)

risposta

10

np.multiply fa solo elemento per elemento moltiplicazione. Vuoi un prodotto esterno. Utilizzare np.outer:

np.outer(np.arccos(xxa), nd) 
Problemi correlati