Python 在numpy中对不同形状的矩阵进行求和和和乘法
我有一个N*M的矩阵A和一个N长度的向量V。我想做一个+V,其中A行I中的每个元素与V中的元素I求和。怎么做 e、 g: 我想对乘法和除法也这样做。解决方案:Python 在numpy中对不同形状的矩阵进行求和和和乘法,python,numpy,Python,Numpy,我有一个N*M的矩阵A和一个N长度的向量V。我想做一个+V,其中A行I中的每个元素与V中的元素I求和。怎么做 e、 g: 我想对乘法和除法也这样做。解决方案: V = V.reshape(-1,1) A + V 现在,它可以工作了。这里要查找的概念是。它使您能够在任意两个矩阵之间进行点式交互,只要它们的形状对应,或者在没有对应的轴上,至少有一条边退化,即大小1。在您的情况下,您需要向V添加一个轴。您可以按如下方式优雅地执行此操作 A + V[:, np.newaxis] 您需要告诉numpy
V = V.reshape(-1,1)
A + V
现在,它可以工作了。这里要查找的概念是。它使您能够在任意两个矩阵之间进行点式交互,只要它们的形状对应,或者在没有对应的轴上,至少有一条边退化,即大小
1
。在您的情况下,您需要向V添加一个轴。您可以按如下方式优雅地执行此操作
A + V[:, np.newaxis]
您需要告诉numpy它必须将向量
V
的维度扩展1,您可以使用特殊索引np.newaxis
来完成。它看起来是这样的:
import numpy as np
A = np.array([[10,20],[100,200],[1000,2000]])
V = np.array([1,2,3])
A + V[:,np.newaxis]
array([[ 11, 21],
[ 102, 202],
[1003, 2003]])
从:
选择元组中的每个newaxis对象用于将结果选择的维度扩展一个单位长度维度。添加的维度是newaxis对象在选择元组中的位置
你的例子不正确<未定义代码>a和
v
。你能编辑一下吗?
import numpy as np
A = np.array([[10,20],[100,200],[1000,2000]])
V = np.array([1,2,3])
A + V[:,np.newaxis]
array([[ 11, 21],
[ 102, 202],
[1003, 2003]])