python - 嵌套 numpy 运算

标签 python numpy

我有一个这样的函数:

def foo(v, w):
    return sum(np.exp(v/w))

其中开头的 v 是一个 numpy 数组,w 是一个数字。现在我想针对更多 w 值绘制此函数的值,因此我需要一个适用于不同大小向量的函数。 我现在的解决方案是显而易见的

r = []
for e in w:
    r.append(foo(v, e))

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

谢谢

最佳答案

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

如果您可以确定 v长度上限并使用 Mx1000 数组满足您的内存要求,则可以执行此操作。

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])
>>>

关于python - 嵌套 numpy 运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31146096/

相关文章:

python - 将抓取的数据导出到具有特定列的 CSV

python异步套接字编程

python - 在 DataFrame 上应用 .value_counts(),并在每个单元格中填充列表

arrays - 使用掩码数组创建 pandas DataFrame

python - 按字典顺序对 2d numpy 数组进行排序

python - PyInstaller + PyQt5 + QML : QtQuick is not installed

python - scikit-learn:K-Means 和 MiniBatchKMeans 聚类算法的比较

arrays - 在 Numpy 中创建不规则数字数组

使用 numpy 矩阵计算距离的 Pythonic 方法?

python - 根据向量类型元素获取numpy数组的掩码