我有(在python中)以下操作(使用numpy表示矩阵和向量):
result = (A.dot(input)/b)
使用A
矩阵和b
,input
向量。 A
和b
已修复,input
正在发生变化。因此,我想将A
和b
简化为单个元素,向量或矩阵,然后可以通过乘法或点积与输入向量组合。不幸的是我不能写
result = (A/b).dot(input)
之后会导致错误的值。我怎样才能将A
和b
连接成一个元素?
答案 0 :(得分:2)
使用None/np.newaxis
将b
扩展为2D
,然后将A
除以它:
Ab = A/b[:,None]
然后使用矩阵乘法在这些迭代中重复使用Ab
,其中input
作为唯一变量:
Ab.dot(input)
作为旁注,尽量避免使用也是Python内置函数名的变量名,在本例中为input
。
示例运行 -
In [164]: A = np.random.rand(4,5)
In [165]: input1 = np.random.rand(5)
In [166]: b = np.random.rand(4)
In [167]: (A.dot(input1)/b)
Out[167]: array([ 2.80446671, 4.49821539, 3.73365285, 1.83176278])
In [168]: Ab = A/b[:,None]
In [169]: Ab.dot(input1)
Out[169]: array([ 2.80446671, 4.49821539, 3.73365285, 1.83176278])