【发布时间】:2020-03-22 06:41:50
【问题描述】:
是否可以使用 numpy 将一个数组提升到另一个数组的幂,以一种产生比输入更大维度的结果的方式 - 即不仅仅是简单的元素方式提升到幂。
作为一个简单的示例,我希望计算以下内容。下面是“速记”形式 - 实际上这是通过在大型 x 数组上循环实现的,因此速度很慢。
x = np.arange(4)
t = np.random.rand(3,3)
y = np.empty_like(x)
y[0] = np.sum(x[0]**t)
y[1] = np.sum(x[1]**t)
y[2] = np.sum(x[2]**t)
y[3] = np.sum(x[3]**t)
我想要一个矢量化的解决方案来代替每次都做y[i]。但是,由于 x 的形状为 [4] 而 y 的形状为 [3,3],所以当我尝试计算 x**t 时出现错误。
有没有快速优化的解决方案?
【问题讨论】:
-
好的,谢谢。抱歉耽搁了,因为我正在测试它。工作得很好,谢谢 - 代码非常干净! numexpr 在我的情况下实际上需要更长的时间,这可能取决于计算机。
标签: python arrays performance numpy matrix