[求助]:numpy.fromfunction函数的Bug问题!
python吧
全部回复
仅看楼主
level 1
任道正 楼主
测试如下代码
import math
import numpy
fun = lambda x: math.sqrt(x)
numpy.fromfunction(fun,(5,))
运行如上代码会报错:
TypeError: only size-1 arrays can be converted to Python scalars
经过测试fun这个匿名函数是没有问题的,并且通过def方式定义的函数用numpy.fromfunction运行时同样由此问题,此外还测试了math.factorial阶层函数同样报错;还测试过numpy.math.factorial仍然是报错!
经过长时间测试,发现numpy.fromfunction貌似只支持由加减乘除四则运算构成的函数,复杂一点的函数比如math.exp,math.log等都会报错,同时上网搜索了不少关于numpy.fromfunction的例程,发现这些例程都是些简单的加减乘除运算~
请问:
1. 这个是代码哪里出了Bug还是numpy.fromfunction本身不支持复杂点的数学运算?
2. 如果numpy.fromfunction本身不支持复杂数学函数,那么有没有其他办法根据fun函数对矩阵下标进行运算创建一个矩阵?(速度要快,for循环之类速度达不到要求)
2018年10月05日 17点10分 1
level 9
这不是bug。fromfunction内部会一次把所有的下标都传给fun,所以fun必须能够处理输入为一个数组的情况。而math.sqrt等函数是做不到这点的。你可以用np.sqrt
2018年10月05日 23点10分 2
了解,试着将函数转化为ufunc函数就正常了,但坑爹之处在于我看的书和网上文档中都没提到必须是ufunc函数~
2018年10月06日 04点10分
👍👍你解决了我的问题!!
2019年03月18日 08点03分
level 15
为你解决编程中遇到的困难
ʷʷʷ.300ᵖʸᵗʰᵒⁿ.ᶜᵒᵐ
2018年10月06日 02点10分 3
1