应用乘法等简单运算的 pythonic-CPU 优化方法是什么:
- 沿着二维数组的一维
- 对二维数组其他维度的所有元素
- 根据另一个一维数组中的元素
?
例子:
x=np.arange(150).reshape([50,3])
y=np.arange(50)+10
我想做的事:
np.array([x[i,:]*y[i] for i in range(50)])
但我想让它尽可能快,因为“50”可能是无数个。
顺便说一句,这完全等同于:
np.array([x[i,:]*j for i,j in enumerate(y)])
?
我在这里做了一些更新,但最后打开了一个新问题
请您参考如下方法:
您可以使用 None 或 np.newaxis 向 y 添加一个新轴,这样它就可以在 x 中广播:
x * y[:,None]
np.allclose((x * y[:,None]), np.array([x[i,:]*y[i] for i in range(50)]))
# True
