1 of 2
ბიმო
  • 16.8k
  • 2
  • 41
  • 104

Husk, 7 bytes

mMoΣz*T

Please note the argument order, try it online!

Explanation

Basically just doing what the definition of matrix-multiplication sais:

mM(Σz*)T  -- takes arguments in reverse order, eg: [[1],[0],[-1]] [[1,2,3],[4,5,6]]
       T  -- transpose the first argument: [[1,0,-1]] [[1,2,3],[4,5,6]]
m         -- map the following function (example element [1,0,-1])
 M(   )   --   map the following function applied to [1,0,-1] (example element [1,2,3])
    z*    --     zip under multiplication: [1,0,-3]
   Σ      --     sum: -2
          -- [[-2],[-2]]
ბიმო
  • 16.8k
  • 2
  • 41
  • 104