5 python arrays numpy matrix matrix-multiplication
我是 Python 的新手。我在做矩阵乘法时遇到了麻烦。我有两个清单:
A =[3.0,3.0]
# 1 by 2 matrix
B =[[ 50.33112583, -49.66887417],
[-49.66887417, 50.33112583]]
# 2 by 2 matrix
Result should be :
# 1 by 2 matrix
c = [1.9867549668874176, 1.986754966887446]
Right now I am doing:
>> A = numpy.matrix(A)
>> B = numpy.matrix(B)
>> C =A * B
>> C
matrix([[ 1.98675497, 1.98675497]])
>>C.tolist()
[[1.9867549668874176, 1.986754966887446]]
Run Code Online (Sandbox Code Playgroud)
如果我做点积然后,
>>> B =numpy.array(B)
>>> B
array([[ 50.33112583, -49.66887417],
[-49.66887417, 50.33112583]])
>>> A = [ 3., 3.]
>>> A =numpy.array(A)
>>> A
array([ 3., 3.])
>>> C = numpy.dot(A,B)
>>> C
array([ 1.98675497, 1.98675497])
>>> C.tolist()
[1.9867549668874176, 1.986754966887446]
Run Code Online (Sandbox Code Playgroud)
为什么在使用矩阵乘法时会得到两个括号??这里的点积和矩阵乘法是否相同?有人可以给我解释一下吗??
当您使用np.matrix()它时,根据定义,它是一个 2-D 容器,并且必须在 2-D 实体之间执行操作并将返回 2-D 实体:
np.matrix([[1,2,3], [4,5,6]])*[[1], [2], [3]]
#matrix([[14],
# [32]])
np.matrix([[1,2,3], [4,5,6]])*[1, 2, 3]
#ValueError
Run Code Online (Sandbox Code Playgroud)
当你在两个二维数组之间使用 a 时np.array(),dot()结果是一个二维数组;而在二维数组和一维数组之间,结果是一维数组:
np.array([[1,2,3], [4,5,6]]).dot([[1], [2], [3]])
#array([[14],
# [32]])
np.array([[1,2,3], [4,5,6]]).dot([1, 2, 3])
#array([14, 32])
Run Code Online (Sandbox Code Playgroud)
当需要按元素操作时,可以使用更复杂和灵活的数组广播规则。以下是如何将每一行乘以不同的标量:
np.array([[1,2,3], [4,5,6]])*[[1], [2]]
#array([[ 1, 2, 3],
# [ 8, 10, 12]])
Run Code Online (Sandbox Code Playgroud)
以及每列如何乘以不同的标量:
np.array([[1,2,3], [4,5,6]])*[1, 2, 3]
#array([[ 1, 4, 9],
# [ 4, 10, 18]])
Run Code Online (Sandbox Code Playgroud)