python-3.x - Python3:将二维函数向量化为二维数组的输出
问题描述
我有一个简单的功能:
def F(rx,ry):
return rx**2+ry**2
然后我必须通过运行这个嵌套循环来填充一个数组:
for i in range(xarr.size):
for j in range(yarr.size):
rx=xarr[i]
ry=yarr[j]
array_2d[i,j] = F(rx,ry)
是否可以将其矢量化?我的想法是获得这样的东西:
array_2d[:,:] = F(xarr[:],yarr[:])
我看到了这个:
vectfunc = np.vectorize(F,otypes=[np.float],cache=False)
这可以给我一个一维数组,例如:
vectfunc(xarr,1)->1D array
但我不明白这对我有什么帮助。
解决方案
幸运的是,您想要执行的操作已经在numpy
.
因此,如果您的输入数组是 numpy 数组,您可以创建一个基本上执行此操作的函数(没有 %timeit)。这显示了您对 2 个长度为 1M 的 numpy 数组的操作:
In [29]: import numpy as np
In [30]: arr1 = np.random.rand(1_000_000)
In [31]: arr2 = np.random.rand(1_000_000)
In [32]: %timeit result = arr1*arr1 + arr2*arr2
3.54 ms ± 25.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [33]:
推荐阅读
- javascript - 如何将 PHP 变量传递给 AJAX URL
- discord - 禁止命令:ReferenceError:消息未定义(Discord.Js)
- java - 线程“主”java.lang.ArrayIndexOutOfBoundsException 中的异常:索引 2 超出范围
- php - 如何将 mikrotik 命令结果发送到 php
- asp.net - 为请求记录创建唯一字符串 ASP.NET Core MVC
- firebase - 如何限制firebase函数的实例数
- rdf - RDF OWL - 一个语句可以用作另一个语句的对象吗?
- python-3.x - 中断 input() 语句
- android - 获取有关协程的混合消息
- python - 如何将web url中的windows url替换为web url并且需要在python中下载pdf文件