python - 逐元素运算实际上执行矩阵运算
问题描述
假设您有两个(或更多)numpy
ndarrays
相等size
(意味着它们具有相等数量的元素),例如:
A = np.array([[1],[2],[3]]) #Define a 3-element column vector
B = np.array([1,2,3]) #Define a 3-element row vector
鉴于 numpy 的文档将*
and/
运算符宣传为两种类型之间的“元素方式”,ndarray
为什么要执行以下操作:
AtimesB = A*B
AoverB = A/B
返回:
array([[1, 2, 3],
[2, 4, 6],
[3, 6, 9]]) #AtimesB
array([[1. , 0.5 , 0.33333333],
[2. , 1. , 0.66666667],
[3. , 1.5 , 1. ]]) #AoverB
代替:
array([1,4,9])
array([1,1,1])
据我所知,该@
运算符旨在进行矩阵乘法并np.divide
处理矩阵除法。我在这里想念什么?这是numpy
处理数组歧义的方式shapes
吗?
解决方案
A
也必须是一行才能获得您期望的结果!
>>> A
array([[1],
[2],
[3]])
>>> A.T
array([[1, 2, 3]])
>>> A.T * B
array([[1, 4, 9]])
>>> A.T / B
array([[1., 1., 1.]])
推荐阅读
- python - 我尝试在目录中打开文件,但出现此错误 FileNotFoundError: [Errno 2] No such file or directory: 'john.txt'
- c - 为什么我的 make 命令仍然显示“没有目标......”?
- java - 如何防止将 WebView 传递给外部类可能导致的内存泄漏?
- javascript - ExtJS - 让商店只生成带有数字的 ID
- python - Python tkinter GUI Windows 流出屏幕 - 按钮不可见
- unity3d - 如何检查游戏对象在其脚本之外是否处于活动状态?
- angular - ESLINT:组件选择器(Angular)
- python - 如何在数据框中创建加权特征?
- angular - 版本 <3.7 的打字稿文件是否有安全导航运算符的替代品
- api-platform.com - 上传文件并要求关系