gpt4 book ai didi

python - 执行 numpy.dot() 时获取值错误

转载 作者:行者123 更新时间:2023-11-28 21:38:17 26 4
gpt4 key购买 nike

我使用 numpy 创建了两个数组:

import numpy as np    
a = np.array([[1, 5, 7], [6, 8, 9]])
b = np.array([[1, 8, 8], [5, 8, 0], [8, 9, 0]])
np.dot(a, b)

现在,在执行 np.dot(a, b) 时出现错误:

ValueError: operands could not be broadcast together with shapes (2,3) (3,3) .

通常,如果 a 的最后一个维度与 b 的倒数第二个维度的大小不同,则会引发值错误。我的代码有什么问题?

最佳答案

您的代码运行良好。请注意,当输入 np.dot()是矩阵,np.dot()执行矩阵乘法

In [18]: a = np.array([[1, 5, 7], [6, 8, 9]])
...: b = np.array([[1, 8, 8], [5, 8, 0], [8, 9, 0]])
...:

# @ is equivalent to `np.dot()` and `np.matmul()` in Python 3.5 and above
In [19]: a @ b
Out[19]:
array([[ 82, 111, 8],
[118, 193, 48]])


In [20]: (a @ b).shape
Out[20]: (2, 3)

# sanity check!
In [22]: a @ b == np.matmul(a, b)
Out[22]:
array([[ True, True, True],
[ True, True, True]], dtype=bool)

关于 @ 的注意事项:它在 Python 3.5 中作为 dedicated infix operator for matrix multiplication 引入。

这是因为 * 运算符执行矩阵乘法还是逐元素乘法存在一些混淆。因此,为了消除混淆,专门的运算符 @ 被指定用于矩阵乘法。所以,

* 执行逐元素乘法
@ 执行矩阵乘法(点积)


关于python - 执行 numpy.dot() 时获取值错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468827/

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