Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scalar-vector multiplication for Vector-Matrix multiplication

Is there a python (numpy) functionality that would accomplish the 3rd "equation"?

using it as a returned lambda function

1. Vector * Scalar

vector*scalar

import numpy as np
a = np.array([3,4])
b = 2
print(a*b)
>>[6,8]

or as lambda function:

import numpy as np

def multiply():
  return lambda a,b: a*b

a = np.array([3,4])
b = 2
j = multiply()
print(j(a,b))
>>[6,8]

2. Matrix * Vector

matrix*vector

import numpy as np
a = np.array([[3,4],[2,5]])
b = np.array([2,4])
print(a*b)
print()
print(np.multiply(a,b))
print()
print(a.dot(b))
print()
print(b.dot(a))
>>[[ 6 16]
>>[ 4 20]]
>>
>>[[ 6 16]
>>[ 4 20]]
>>
>>[22 24]
>>
>>[14 28]

or as lambda function:

import numpy as np

def multiply():
  return lambda a,b: a.dot(b)

a = np.array([[3,4],[2,5]])
b = np.array([2,4])
j = multiply()
print(j(a,b))
>>[22 24]

3. Matrix (interpreted as many (2,1)-Vectors) * Vector (interpreted as many Scalars) or: Vector*Scalar for each row

matrix(many vectors)*vector(many scalars)

import numpy as np
a = np.array([[3,4],[2,5]])
b = np.array([2,4])

see answer by ALI

or as lambda function:

import numpy as np

def multiply():
  return lambda a,b: ???

a = np.array([[3,4],[2,5]])
b = np.array([2,4])
j = multiply()
print(j(a,b))
>>[[6,8],
>>[8,20]]
like image 203
Chris F Avatar asked Feb 27 '26 02:02

Chris F


1 Answers

import numpy as np
a = np.array([[3,2], [4, 5]])
b = np.array([2, 4])
c = np.vstack((b, b)).T
d = np.multiply(a,c)
print(d)


array([[ 6,  8],
       [8, 20]])

If you need a function

def elementwisemult(a, b):
    b = np.vstack((b, b)).T
    d = np.multiply(a,b)
    return d

If you want to use lambda function:

import numpy as np
a = np.array([[3,4],[2,5]])
b = np.array([2,4])
def elementwisemult():
    return lambda a, b: np.multiply(a, (np.vstack((b, b)).T))
j = elementwisemult()
j(a,b)
like image 110
Danish Avatar answered Mar 04 '26 09:03

Danish



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!