2015-06-30 1 views
0

Попытка привести мой Python к нюханию с помощью R-навыков и поняла, что я понятия не имею, как выполнять простые матричные арифметики без использования Numpy.Как выполнить умножение вложенного списка, массива и списка без Numpy

x = [[1,2,3],[4,5,6]] 
y = [[1,2],[3,4],[5,6]] 

Я попытался

X = (x*y for x,y in zip([[1,2,3],[4,5,6]],[[1,2],[3,4],[5,6]])) 

но получил <generator object <genexpr> at 0xb205fc34>

Я также безуспешно пытался умножать массив списком.

x = [[1],[2],[3] 
y = [1,2,3] 

Я пытался получить внешнее произведение двух используя

Y = (x.doty for x,y in zip([[1],[2],[3]],[[1,2,3]])) 

но print y'6' вернулся

Спасибо заранее!

EDIT: Я ищу, чтобы повторить следующее (написано в R)

Я ищу повторить это (написано в R)

x = matrix(c(1,2,3,4,5,6), 
    nrow = 2, 
    ncol = 3, 
    byrow = TRUE) 

y = matrix(c(1,2,3,4,5,6), 
      nrow = 3, 
      ncol = 2, 
      byrow = TRUE) 

z = x%*%y 

print(z) 
[,1] [,2] 
[1,] 22 28 
[2,] 49 64 

y1 = (1,2,3) 
x1 = t(y1) 
outer.product = x1 %*% y1 

print(outer.product) 
[,1] [,2] [,3] 
[1,] 1 2 3 
[2,] 2 4 6 
[3,] 3 6 9 
+0

Какой результат вы хотите? – YXD

+0

отредактировал вопрос, чтобы показать, что я ищу! благодаря! – scribbles

ответ

0

Python lists and NumPy arrays are different. Если вы работаете с массивами NumPy, то вы можете делать такие вещи, как:

>>> x = [[1,2,3],[4,5,6]] 
>>> y = [[1,2],[3,4],[5,6]] 
>>> X = np.array(x) 
>>> Y = np.array(y) 
>>> X.dot(Y) 
array([[22, 28], 
     [49, 64]]) 
>>>