给定形状x
的numpy数组(m,)
和形状y
的numpy数组(m/n,)
,如何将x
乘以{的相应元素{1}}有效吗?
这是我最好的尝试:
y
答案 0 :(得分:3)
您的解决方案对我来说非常好。
如果您想稍微加快速度,可以:
使用ravel()
代替flatten()
(如果可能,前者将返回视图,后者始终返回副本)。
以Fortran顺序重塑x
以避免y
上的另一个索引操作的开销(虽然后续时间表明此加速可忽略不计)
因此重写乘法变为:
>>> (x.reshape((2, -1), order='f') * y).ravel('f')
array([ 2, 10, 12, 8, 54, 6])
时序:
>>> %timeit (y[:, np.newaxis] * x.reshape((-1, n))).flatten()
100000 loops, best of 3: 7.4 µs per loop
>>> %timeit (x.reshape((n, -1), order='f') * y).ravel('f')
100000 loops, best of 3: 4.98 µs per loop