3
$\begingroup$

I have two lists of vectors and I want to take the outer product between elements in the lists of the same index. Using either Outer or TensorProduct works for e.g. the first two indices:

 a = {{a1, a2, a3}, {b1, b2, b3}}; b = {{e1, e2, e3}, {f1, f2, f3}}; MatrixForm[Outer[Times, a[[1]], b[[1]]]] MatrixForm[TensorProduct[a[[1]], b[[1]]]] MatrixForm[Outer[Times, a[[2]], b[[2]]]] MatrixForm[TensorProduct[a[[2]], b[[2]]]] 

I would like a command that can do this for lists of Length 1000 where the data is imported as a Table as follows and where All = 1000 :

vectorData = Import["/home/vectorData", "Table"]; a = vectorData[[All, {2, 3, 4}]]; b = vectorData[[All, {5, 6, 7}]]; 

I had a similar question in mind for inner products between "lists of vectors" (or tensors) but this was solved neatly with MapThread : MapThread[Dot, {a, b}]. Does anyone have a similar technique for the outer products ?


$\endgroup$

1 Answer 1

4
$\begingroup$

You can use MapThread with TensorProduct as the first argument as follows:

MapThread[TensorProduct, {a, b}] 

{{{a1 e1, a1 e2, a1 e3}, {a2 e1, a2 e2, a2 e3}, {a3 e1, a3 e2, a3 e3}},
{{b1 f1, b1 f2, b1 f3}, {b2 f1, b2 f2, b2 f3}, {b3 f1, b3 f2, b3 f3}}}

TeXForm[MatrixForm /@ %] 

$\left\{\left( \begin{array}{ccc} \text{a1} \text{e1} & \text{a1} \text{e2} & \text{a1} \text{e3} \\ \text{a2} \text{e1} & \text{a2} \text{e2} & \text{a2} \text{e3} \\ \text{a3} \text{e1} & \text{a3} \text{e2} & \text{a3} \text{e3} \\ \end{array} \right),\left( \begin{array}{ccc} \text{b1} \text{f1} & \text{b1} \text{f2} & \text{b1} \text{f3} \\ \text{b2} \text{f1} & \text{b2} \text{f2} & \text{b2} \text{f3} \\ \text{b3} \text{f1} & \text{b3} \text{f2} & \text{b3} \text{f3} \\ \end{array} \right)\right\}$

$\endgroup$
2
  • $\begingroup$ This works perfectly. I'm not (yet) reputable enough to thank you, or at least to visibly thank you! But I'll come back when I am. $\endgroup$ Commented May 27, 2019 at 18:15
  • $\begingroup$ @AshaEgreck If kglr's answer solves your problem, consider upvoting it and accepting it. $\endgroup$ Commented Nov 27, 2020 at 16:49

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.