Python Numpy矢量化函数
我有这个函数Python Numpy矢量化函数,python,python-3.x,numpy,vectorization,Python,Python 3.x,Numpy,Vectorization,我有这个函数fs(I,j,dif)。通过执行以下操作很容易将此函数矢量化 vfunc=np.vectorize(fs) 问题是,我想计算这个函数的输出 i=0, j=1,2,3,4,5, ...ysize-1 i=1, J=1,2,3,4,5, ...ysize-1 .... i=xsize-1, j=1,2,3,4,5 ... ysize-1 对于i的一个值,vfunc(0,np.arange(ysize),0)(dif=0)没有问题 但我无法找到如何对I的所有值执行此操作 我唯一能
fs(I,j,dif
)。通过执行以下操作很容易将此函数矢量化
vfunc=np.vectorize(fs)
问题是,我想计算这个函数的输出
i=0, j=1,2,3,4,5, ...ysize-1
i=1, J=1,2,3,4,5, ...ysize-1
....
i=xsize-1, j=1,2,3,4,5 ... ysize-1
对于i
的一个值,vfunc(0,np.arange(ysize),0)(dif=0)没有问题
但我无法找到如何对I
的所有值执行此操作
我唯一能做到的就是
vfunc([[0],[1],[2],...[xsize-1]], np.arange(ysize), 0)
这对于大型xsize是不可行的。有办法吗?我理解你的问题如下。您想知道如何用xsize来表示列表[[0]、[1]、[2]、…[xsize-1]]
?列表理解为你做的工作。
[0]、[1]、[2]、…[xsize-1]=[i]表示范围内的i(xsize)]
然后可以按如下方式调用矢量化函数(例如函数fs
)
最后一个i
是np.arange(xsize)[:,None]
,一个(xsjze,1)形状数组。很酷,然后一个重塑(xsize*ysize)就是我想要的。我强烈建议你看看。
import numpy as np
xsize=10
ysize=15
def fs(i,j,dif):
return i+j
np.vectorize(fs)([[i] for i in range(xsize)],np.arange(ysize),0)