向量矩阵乘法的标量向量乘法
Scalar-vector multiplication for Vector-Matrix multiplication
是否有 python (numpy) 功能可以完成第三个 "equation"?
将其用作返回的 lambda 函数
1.矢量 * 标量
import numpy as np
a = np.array([3,4])
b = 2
print(a*b)
>>[6,8]
或作为 lambda 函数:
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。矩阵 * 向量
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]
或作为 lambda 函数:
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。矩阵(解释为多个 (2,1)-向量)* 向量(解释为多个标量)或:每行的向量*标量
import numpy as np
a = np.array([[3,4],[2,5]])
b = np.array([2,4])
see answer by ALI
或作为 lambda 函数:
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]]
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]])
如果你需要一个函数
def elementwisemult(a, b):
b = np.vstack((b, b)).T
d = np.multiply(a,b)
return d
如果你想使用lambda函数:
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)
有
import numpy as np
a = np.array([
[3, 4],
[2, 5],
])
b = np.array([2, 4])
方程 1 使用标量积
b * 3
# array([ 6, 12])
方程 2 使用点积
np.dot(a, b)
# array([22, 24])
公式 3 使用 broadcasted elementwise product
a * b[:, None]
# array([[ 6, 8],
# [ 8, 20]])
是否有 python (numpy) 功能可以完成第三个 "equation"?
将其用作返回的 lambda 函数
1.矢量 * 标量
import numpy as np
a = np.array([3,4])
b = 2
print(a*b)
>>[6,8]
或作为 lambda 函数:
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。矩阵 * 向量
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]
或作为 lambda 函数:
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。矩阵(解释为多个 (2,1)-向量)* 向量(解释为多个标量)或:每行的向量*标量
import numpy as np
a = np.array([[3,4],[2,5]])
b = np.array([2,4])
see answer by ALI
或作为 lambda 函数:
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]]
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]])
如果你需要一个函数
def elementwisemult(a, b):
b = np.vstack((b, b)).T
d = np.multiply(a,b)
return d
如果你想使用lambda函数:
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)
有
import numpy as np
a = np.array([
[3, 4],
[2, 5],
])
b = np.array([2, 4])
方程 1 使用标量积
b * 3
# array([ 6, 12])
方程 2 使用点积
np.dot(a, b)
# array([22, 24])
公式 3 使用 broadcasted elementwise product
a * b[:, None]
# array([[ 6, 8],
# [ 8, 20]])