python numpy fromfunction()调用我的理解对不对,numpyfromfunction,书上看到了一段代码,讲n


书上看到了一段代码,讲numpy的fromfunction的使用

import numpy as npdef func(i):    print 'call!'    return i%4np.fromfunction(func, (10,))#结果是 array([1., 2., 3., 4., 1., 2., 3., 4., 1., 2.])

但是很奇葩的是,func这个函数只是传递单个int类型,返回一个值。为什么用了fromfunction会返回这么一个数组?

猜测一下应该是numpu调用了10次的func,然后每次把不同的参数传递进去,最后把结果拼成一个数组。

但是最奇葩的是,函数中的print 'call!'只执行过一次。。。也就是说不是同一个函数调用了10次??那这个fromfunction的调用形式到底是啥。。。

因为Python中没有指明类型。

def func(i):    print 'call!'    return i%4

你看到i知道代表整型,但是Python不知道。i一样可以是数组:

from numpy import * array([1, 2, 3, 4]) % 4 # 返回 array([1, 2, 3, 0])

只调用一次,看源代码最清楚:

def fromfunction(function, shape, **kwargs):    dtype = kwargs.pop('dtype', float)    args = indices(shape, dtype=dtype)    return function(*args,**kwargs)

编橙之家文章,

评论关闭