dot时,The new value for update must be a scalar or a vector.

下面代码,我dataframe的五档volume,比如是n*5的matrix,后面只是一个list,现在我要这个list对前面的n*5,每一行都做一个dot返回一个值,其实就是n*5和5*1的两个矩阵做乘法


update aa_copy set  front_snap = dot((matrix([ask_volume1,ask_volume2,ask_volume3,ask_volume4,ask_volume5])-
matrix([move(ask_volume1,1),move(ask_volume2,1),move(ask_volume3,1),move(ask_volume4,1),move(ask_volume5,1)])),matrix([1,2,3,4,5]))

我执行上面代码时,报错如下:

The new value for update must be a scalar or a vector.


请先 登录 后评论

1 个回答

wale

计算结果是一个n * 1的矩阵,所以报错,你把结果转成一个vector即可:dot(....).reshape()。 


update aa_copy set  front_snap = reshape(dot((matrix([ask_volume1,ask_volume2,ask_volume3,ask_volume4,ask_volume5])-
matrix([move(ask_volume1,1),move(ask_volume2,1),move(ask_volume3,1),move(ask_volume4,1),move(ask_volume5,1)])),matrix([1,2,3,4,5])))
请先 登录 后评论