外部产品并通过矢量操作展平-numpy

时间:2018-08-10 10:23:18

标签: python numpy

我正在使用2维数组m和1维数组v做以下操作:

result = np.array([np.outer(v, m_row).flatten() for m_row in m])

但是,这比numpy的纯矢量运算要慢得多,因为我使用的是列表推导,最后使用np.array

我可以只用一个操作就可以为矩阵中的每一行做这个outer产品吗?还是至少仅使用矢量运算而不使用循环或列表理解?

1 个答案:

答案 0 :(得分:2)

扩展暗淡,然后使用broadcasting-

(m[:, None, :]*v[:, None]).reshape(m.shape[0], -1)

或者,用np.einsum-

np.einsum('ij,k->ikj', m, v).reshape(m.shape[0], -1)

对于形状为m的{​​{1}}和形状为(30, 5)的{​​{1}}:

v