import numpy as np
a0 = np.array([[1, 2, 3]])
b0 = np.array([[1, 2, 3]])
c0 = np.array([[1, 2, 3]])
d0 = ((a0.T * b0).flatten() * c0.T)
a1 = np.array([[2, 3, 4]])
b1 = np.array([[2, 3, 4]])
c1 = np.array([[2, 3, 4]])
d1 = ((a1.T * b1).flatten() * c1.T)
a2 = np.array([[3, 4, 5]])
b2 = np.array([[3, 4, 5]])
c2 = np.array([[3, 4, 5]])
d2 = ((a2.T * b2).flatten() * c2.T)
a = np.stack((a0, a1, a2))
b = np.stack((b0, b1, b2))
c = np.stack((c0, c1, c2))
d = (a.reshape(3, -1, 1) * b).reshape(3, 1, -1) * c.reshape(3, -1, 1)
print('Combined computation:')
print(d)
print('Stacked individual computation:')
print(np.stack((d0, d1, d2)))
aW1wb3J0IG51bXB5IGFzIG5wCgphMCA9IG5wLmFycmF5KFtbMSwgMiwgM11dKQpiMCA9IG5wLmFycmF5KFtbMSwgMiwgM11dKQpjMCA9IG5wLmFycmF5KFtbMSwgMiwgM11dKQpkMCA9ICgoYTAuVCAqIGIwKS5mbGF0dGVuKCkgKiBjMC5UKQoKYTEgPSBucC5hcnJheShbWzIsIDMsIDRdXSkKYjEgPSBucC5hcnJheShbWzIsIDMsIDRdXSkKYzEgPSBucC5hcnJheShbWzIsIDMsIDRdXSkKZDEgPSAoKGExLlQgKiBiMSkuZmxhdHRlbigpICogYzEuVCkKCmEyID0gbnAuYXJyYXkoW1szLCA0LCA1XV0pCmIyID0gbnAuYXJyYXkoW1szLCA0LCA1XV0pCmMyID0gbnAuYXJyYXkoW1szLCA0LCA1XV0pCmQyID0gKChhMi5UICogYjIpLmZsYXR0ZW4oKSAqIGMyLlQpCgphID0gbnAuc3RhY2soKGEwLCBhMSwgYTIpKQpiID0gbnAuc3RhY2soKGIwLCBiMSwgYjIpKQpjID0gbnAuc3RhY2soKGMwLCBjMSwgYzIpKQoKZCA9IChhLnJlc2hhcGUoMywgLTEsIDEpICogYikucmVzaGFwZSgzLCAxLCAtMSkgKiBjLnJlc2hhcGUoMywgLTEsIDEpCgpwcmludCgnQ29tYmluZWQgY29tcHV0YXRpb246JykKcHJpbnQoZCkKCnByaW50KCdTdGFja2VkIGluZGl2aWR1YWwgY29tcHV0YXRpb246JykKcHJpbnQobnAuc3RhY2soKGQwLCBkMSwgZDIpKSk=