[编辑:我对这个例子进行了一些修改,所以没有很好地清理代码。我的问题是,如何将子数组传递到numpy.vectorize-d函数中,而不是针对本例。]
我不知道如何使用numpy.vectorize或numpy.frompyfunc对以数组作为参数的命令进行矢量化。
让我们想想这个简单的例子(我知道这是一个非常基本的例子,我根本不需要使用numpy.vectorize。我只是想举个例子:
aa = [[1,2,3,4], [2,3,4,5], [5,6,7,8], [9,10,11,12]]
bb = [[100,200,300,400], [100,200,300,400], [100,200,300,400], [100,200,300,400]]
我想对一个函数进行矢量化,这个函数将a a和bb的每个子数组的第二个元素相加。在这个例子中,我想返回一个数组[202 203 206 210]
但是这样的代码不起作用:
def vec2(bsub, asub):
return bsub[1] + asub[1]
func2 = np.vectorize(vec2)
func2( bb, aa )
与numpy.frompyfunc类似的事情没有运气。
我的问题是,如何将子数组列表转换成numpy.vectorize-d函数,并让每个子数组成为该函数的参数?
你的问题之一是aa和bb是列表,而不是
numpy.array()
。你应该做:我注意到的第二件事是,要获得每个子数组的第二个元素,需要
aa[:,1]
,而不是aa[2]
。第三,你的
vec2
函数应该return
一些东西,而不仅仅是print
。最后一个问题是,
vec2
函数应该对整数而不是数组进行操作,并且应该将切片传递给函数,而不是完整的数组。修正后的版本(返回预期输出)是:在OP的文章中做了一些修改,使得这个答案看起来有点奇怪。
相关问题 更多 >
编程相关推荐