Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NumPy:向量乘法矩阵_Python_Numpy - Fatal编程技术网

Python NumPy:向量乘法矩阵

Python NumPy:向量乘法矩阵,python,numpy,Python,Numpy,我得到了1个名为A1(18,11)的矩阵和3个名为norms,offset和priorita(18,1)的向量 当我尝试执行此操作时: A1 = (A1 + offsets) / norms * priorita 我得到以下错误: A1 = (A1 + offsets) / norms * priorita File "/usr/lib/python2.7/dist-packages/numpy/matrixlib/defmatrix.py", line 330, in __mul__

我得到了1个名为
A1
(18,11)的矩阵和3个名为
norms
offset
priorita
(18,1)的向量

当我尝试执行此操作时:

A1 =  (A1 + offsets) / norms * priorita
我得到以下错误:

A1 =  (A1 + offsets) / norms * priorita
  File "/usr/lib/python2.7/dist-packages/numpy/matrixlib/defmatrix.py", line 330, in __mul__
    return N.dot(self, asmatrix(other))
ValueError: matrices are not aligned

我无法理解,因为矩阵看起来与我对齐。你能帮我理解这个错误吗?

(A1+偏移量)/norms
.shape
(18,11)
。不能将
(18,11)
矩阵乘以
(18,1)
向量(第一个矩阵的第二个/列维度必须等于向量的维度)。我不确定您的实际目标是什么,但您可能想转置矩阵,假设您的目标是标准矩阵向量乘法:

A1 =  ((A1 + offsets) / norms).T * priorita

当你有一个
矩阵
时,不管它是一个
矩阵
和一个
数组
还是两个
矩阵
s
*
始终被视为矩阵乘法,因此出现
未对齐
错误,因为它根本不执行单元操作。您可以在
defmatrix.pyc


要执行您想要的向量操作,请使用
np.multiply((A1+偏移量)/norms,priorita)
,这与
np.matrix(np.array((A1+偏移量)/norms)*np.array(priorita))
是一样的,但速度稍微快一点,而且我认为读起来更好

如果
norms
offset
priorita
具有
ndim=2
,如果使用
offset.ravel()
norms.ravel()
priorita.ravel()
np.乘法((A1+偏移量)/norms,priorita)
是一种方法。谢谢。