2015-03-20 4 views
6

Я хотел бы умножить два вектора, один столбец (т. Е. (N + 1) x1), одну строку (т. Е. 1x (N + 1)), чтобы дать (N + 1) матрица x (N + 1). Я довольно новыми для Numpy, но есть некоторый опыт работы с MATLAB, это эквивалентный код в MATLAB, что я хочу в Numpy:Умножение векторов столбцов и строк в Numpy

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

в Numpy Я пробовал:

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 добавила строку asarray после того, как я заметил, что без нее Numpy, похоже, обрабатывает xx и n как списки. np.shape(n), np.shape(xx), np.shape(na) и np.shape(xxa) дает тот же результат: (100001L,)

ответ

10

np.multiply только делает поэлементно умножения. Вы хотите внешний продукт. Использовать np.outer:

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