gpt4 book ai didi

python - 矩阵乘法和数组点的区别

转载 作者:太空狗 更新时间:2023-10-30 03:01:10 24 4
gpt4 key购买 nike

我是 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]]

如果我做点积,

    >>> 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]

为什么我在使用矩阵乘法时得到两个括号??点积和矩阵乘法在这里是否相同?谁能给我解释一下??

最佳答案

当您使用 np.matrix() 时,根据定义,它是一个二维容器,操作必须在二维实体之间执行,并将返回二维实体:

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

当您在两个二维数组之间的 dot() 中使用 np.array() 时,结果是一个二维数组;而在二维数组和一维数组之间,结果是一维数组:

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])

更复杂和灵活broadcasting rules当需要逐元素操作时可以使用 for 数组。以下是每行如何乘以不同的标量:

np.array([[1,2,3], [4,5,6]])*[[1], [2]]
#array([[ 1, 2, 3],
# [ 8, 10, 12]])

以及如何将每一列乘以不同的标量:

np.array([[1,2,3], [4,5,6]])*[1, 2, 3]
#array([[ 1, 4, 9],
# [ 4, 10, 18]])

关于python - 矩阵乘法和数组点的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26417295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com