首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在NumPy数组的每个单元上高效地计算函数

在NumPy数组的每个单元上高效地计算函数
EN

Stack Overflow用户
提问于 2011-10-09 12:21:10
回答 6查看 119.7K关注 0票数 126

给定一个NumPy数组A,将相同的函数f应用于每个单元的最快/最有效的方法是什么?

假设我们将f(A(i,j) )赋值给A(i,j)。

  • 函数f没有二进制输出,因此掩码(Ing)操作将不起作用。

“显而易见”的双循环迭代(通过每个单元)是最优解决方案吗?

EN

回答 6

Stack Overflow用户

发布于 2011-10-09 13:06:11

你可以简单地vectorize这个函数,然后在每次你需要它的时候将它直接应用于一个Numpy数组:

代码语言:javascript
复制
import numpy as np

def f(x):
    return x * x + 3 * x - 2 if x > 0 else x * 5 + 8

f = np.vectorize(f)  # or use a different name if you want to keep the original f

result_array = f(A)  # if A is your Numpy array

在向量化时,直接指定显式输出类型可能更好:

代码语言:javascript
复制
f = np.vectorize(f, otypes=[np.float])
票数 164
EN

Stack Overflow用户

发布于 2011-10-10 08:02:53

一个类似的问题是:Mapping a NumPy array in place。如果可以找到f()的输出,那么应该使用ufunc参数。

票数 6
EN

Stack Overflow用户

发布于 2016-05-10 19:59:18

如果您正在处理数字和f(A(i,j)) = f(A(j,i)),则可以使用scipy.spatial.distance.cdist将f定义为A(i)A(j)之间的距离。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7701429

复制
相关文章

相似问题

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