我正在使用2维数组m
和1维数组v
做以下操作:
result = np.array([np.outer(v, m_row).flatten() for m_row in m])
但是,这比numpy的纯矢量运算要慢得多,因为我使用的是列表推导,最后使用np.array
。
我可以只用一个操作就可以为矩阵中的每一行做这个outer
产品吗?还是至少仅使用矢量运算而不使用循环或列表理解?
答案 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