首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套numpy操作

嵌套numpy操作
EN

Stack Overflow用户
提问于 2015-06-30 18:48:04
回答 1查看 330关注 0票数 1

我有这样的功能:

代码语言:javascript
复制
def foo(v, w):
    return sum(np.exp(v/w))

其中v开头是一个numpy数组,w是一个数字。现在,我想为w的更多值绘制这个函数的值,所以我需要一个可以工作于不同大小的向量的函数。我现在的解决方案是显而易见的

代码语言:javascript
复制
r = []
for e in w:
    r.append(foo(v, e))

但我想知道是否有更好的方法来做到这一点。此外,我希望保持低内存,所以我需要避免创建一个大矩阵,然后将函数应用于列上的每个值和和(v的长度大于5e+4,w的长度为1e+3)。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-30 19:15:31

如果您无法确定v长度的上限并确保不超过内存要求,我认为您必须坚持使用您的解决方案。

如果可以确定v长度的上限,并使用Mx1000数组满足内存需求,则可以这样做。

代码语言:javascript
复制
import numpy as np
v = np.array([1,2,3,4,5])
w = np.array([10.,5.])
c = v / w[:, np.newaxis]
d = np.exp(c)
e = d.sum(axis = 1)

>>> 
>>> v
array([1, 2, 3, 4, 5])
>>> w
array([ 10.,   5.])
>>> c
array([[ 0.1,  0.2,  0.3,  0.4,  0.5],
       [ 0.2,  0.4,  0.6,  0.8,  1. ]])
>>> d
array([[ 1.10517092,  1.22140276,  1.34985881,  1.4918247 ,  1.64872127],
       [ 1.22140276,  1.4918247 ,  1.8221188 ,  2.22554093,  2.71828183]])
>>> e
array([ 6.81697845,  9.47916901])
>>>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31146096

复制
相关文章

相似问题

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