首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数组提升到另一个数组的功率,即扩展数组的维数。

将数组提升到另一个数组的功率,即扩展数组的维数。
EN

Stack Overflow用户
提问于 2019-11-26 19:05:58
回答 1查看 317关注 0票数 1

是否可以使用numpy将数组提升到另一个数组的功率,从而产生一个比输入维度更大的结果?也就是说,不仅仅是简单的元素明智地提高到。

作为一个简单的例子,我希望计算以下内容。下面是"longhand“表单--在实践中,这是由大型x数组上的一个循环实现的,因此速度很慢。

代码语言:javascript
复制
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时,会得到一个错误。

有没有快速优化的解决方案?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-26 19:09:40

一种直接向量化的方法是使用broadcasting -

代码语言:javascript
复制
y = (x[:,None,None]**t).sum((1,2)).astype(x.dtype)

或者用内置的np.power.outer -

代码语言:javascript
复制
y = np.power.outer(x,t).sum((1,2)).astype(x.dtype)

对于大型阵列,利用多核与numexpr模块-

代码语言:javascript
复制
import numexpr as ne

y = ne.evaluate('sum(x3D**t1D,1)',{'x3D':x[:,None],'t1D':t.ravel()}).astype(x.dtype)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59057824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档