2015-10-12 4 views
2

Допустим, у меня есть:множительной Numpy массивы различного размера

x = numpy.array([1,2,3]) 
y = numpy.array([1,2]) 

То, что я хочу, это векторизация и эффективный способ сделать:

numpy.cos(x)*numpy.cos(y[0]) 
numpy.cos(x)*numpy.cos(y[1]) 

Это очень важно, это работает так же быстро, как это возможно.

+1

И каково должно быть выходное изображение? 2 массива того же размера, что и 'x', один массив' (3,2) 'или' (2,3) 'shape? Или что-то другое? – hpaulj

+0

Я не уверен, понял ли я вашу проблему, но я думаю, что вы просто ищете что-то вроде этого: 'numpy.transpose (numpy.matrix (numpy.cos (y))) * numpy.cos (x)' – Sina

ответ

3

С этими входами (x и y) вы можете сказать NumPy, чтобы добавить новую ось на свой выход, и тогда вы будете иметь возможность получить матрицу результатов, где каждая пара x, y оценивают следующим образом:

numpy.cos(x[:, numpy.newaxis])*numpy.cos(y) 

Давая в этом случае:

#  y[0]  y[1] 
array([[ 0.29192658, -0.2248451 ], # x[0] 
     [-0.2248451 , 0.17317819], # x[1] 
     [-0.53489523, 0.41198225]]) # x[2] 
+0

Perfect , благодаря! – user3259201

Смежные вопросы