我尝试将matlab代码移植到numpy,特别是矩阵乘法:
% matlab multiplication of two 480x640 double, yields 480x640 double
result = xgrid.*depth
在python中,我认为它应该像
result = xgrid.dot(depth)
但我得到ValueError: shapes (480,640) and (480,640) not aligned: 640 (dim 1) != 480 (dim 0)
转置无效,因为它改变了输出的形状。
我怎样才能正确移植代码?
答案 0 :(得分:8)
MATLAB .*
是逐元素乘法。在numpy
普通*
中是一回事。 np.dot
是矩阵乘法函数..
答案 1 :(得分:3)
翻译是元素乘法:
<div class="form-group">
<label class="control-label col-md-2" for="State_Id">State Name</label>
<div class="col-md-10">
<select class="form-control" id="State_Id" name="State_Id"><option value="">Select State</option>
<option value="1">Madhya Pradesh</option>
<option value="2">Gujarat</option>
<option value="4">Punjab</option>
<option value="9">Tamil Nadu</option>
<option value="10">Haryana</option>
</select>
<span class="field-validation-valid text-danger" data-valmsg-for="State_Id" data-valmsg-replace="true"></span>
</div>
</div>
和矩阵乘法:
result = xgrid .* depth; % matlab
result = xgrid * depth # python
答案 2 :(得分:1)
在错误消息中,您在sort -t' '
sort -t ' '
sort -t " "
sort -t" "
sort -t=" "
中使用array
class看起来就是这样。默认情况下,此类对象的操作是逐点:
numpy
事实上,你需要调用函数来使它成为&#34;矩阵式的&#34;:
import numpy as np
a = np.array([[1, 2], [3, 4]])
>>> a * a
array([[ 1, 4],
[ 9, 16]])
您可能也有兴趣查看numpy.matrix
。
答案 3 :(得分:-2)
numpy.dot不是矩阵乘法,而是内积。尝试使用numpy.multiply或numpy.outer来实现你想要的目标
result = numpy.multiply(xgrid,depth)