导入numpy.math模块时出现错误

4
当我使用
from numpy.math import factorial as fact 

我得到的错误信息是:ImportError: 找不到模块“numpy.math”

但是
import numpy
fact=numpy.math.factorial

作品。

为什么?numpy.math真的像其他模块一样实现了吗?


我认为numpy中没有数学模块。我找不到任何... - Gerges
3个回答

3

numpy似乎导入了标准的math库:

In [8]: import numpy

In [9]: import math

In [10]: math is numpy.math
Out[10]: True

因此,它不是numpy的子模块,只是一个导入的模块对象。这就是为什么你不能像这样导入:from numpy.math import something

我的问题是: 加载函数的方式不同,使用它们的方式也不同。 也许这是一个安装问题? - Top Maths
我不知道。没有足够的信息来说明任何事情。也许numpy已经被更改了。在我的情况下:numpy.version == '1.13.1',我使用的是Python 3.5.2在Ubuntu 16.04 LTS上。 - Arpad Horvath -- Слава Україні

2
阿尔帕德·霍瓦斯的回答已经说明了,numpy.mathmath库没有区别,因此无法处理不能转换为标量的numpy数组。但是您可以使用scipy.misc.factorial
import scipy.misc
a = np.arange(5)
print(scipy.misc.factorial(a))
#output
#[ 1.  1.  2.  6. 24.]

这在scipy 1.0.0中已经被弃用,但仍可使用。请改用scipy.special.factorial。其他针对数组实现的数学函数可以在这里(numpy这里(scipy.specials找到。

抱歉,但这不是我的问题。 - Top Maths
不同的库。一个用于标量,另一个用于数组。它们有相同的名称,并不意味着在底层的数学运算中有什么不同。 - Mr. T

1

不需要使用numpy,只需使用

from math import factorial as fact

是的,我知道,我想知道为什么 从numpy.math导入阶乘-->不起作用与之比较 从numpy.random导入randint-->有效相同的语法... - Top Maths

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接