Python 如何获得稳定版本的numpy for PyPy?
我已经从链接下载了PyPy便携版,并使用命令Python 如何获得稳定版本的numpy for PyPy?,python,numpy,pypy,Python,Numpy,Pypy,我已经从链接下载了PyPy便携版,并使用命令pip install git安装了numpy for PyPy+https://bitbucket.org/pypy/numpy.git 安装成功,但我无法使用numpy.min这样的功能 >>>> numpy.min([1,2,3]) Traceback (most recent call last): ... TypeError: expected integer, got NoneType object 因此,
pip install git安装了numpy for PyPy+https://bitbucket.org/pypy/numpy.git
安装成功,但我无法使用numpy.min
这样的功能
>>>> numpy.min([1,2,3])
Traceback (most recent call last):
...
TypeError: expected integer, got NoneType object
因此,我运行了numpy.test()
,结果是
FAILED (KNOWNFAIL=5, SKIP=24, errors=886, failures=152)
<nose.result.TextTestResult run=3367 errors=886 failures=152>
失败(KNOWNFAIL=5,SKIP=24,errors=886,failures=152)
这似乎是我安装的numpy的不稳定版本。如何获得稳定版本的numpy for PyPy
我还尝试了pip-install-numpy
(而不是pip-install-git)+https://bitbucket.org/pypy/numpy.git
)
然而,我遇到了链接中讨论的另一个问题
答案是使用
apt get
安装numpy,但这个答案只适用于CPython。PyPy有好的解决方案吗?我刚刚下载了PyPy2.4及其numpy(通过git安装)。看起来ufunc
功能有缺陷或不完整
x = numpy.arange(10)
x.sum() # 45
x.min() # 0
numpy.min(x) # TypeError: expected integer, got NoneType object
numpy.sum(x) # same error
但是如果我给它一个out
属性,这些ufunc
版本就可以工作(sortof)
但它不会在out
参数中返回值
y = 0
numpy.sum(x, out=y) # returns 45, but does not change y
常规numpy
会反对y
不是数组(或维度错误)
np.min(x)
与np.core.umath.minimum.reduce(x,None,None,None)
相同,其中reduce
参数是(变量、轴、数据类型、输出)
<代码>np.core.umath.minimum.reduce(x)工作正常
np.core.umath.add.acculate
与out
参数相关,因此问题似乎与reduce
无关
如果使用git clone安装,您将在计算机上获得完整的存储库,您可以对其进行浏览。这些信息也可以在线获取。我仍在试图弄清楚ufunc reduce是在哪里定义的,它是否功能齐全。该模块仍处于开发阶段
是一个numpy状态表。它引用了一个
pypypy/module/mpy
目录。我还没有弄清楚这与存储库的关系(在下载页面上)。我可以在minompy
树中找到ufunc.reduce
代码,但在numpy.git
树中找不到
在
core/\u methods.py
中,sum
被定义为调用add.reduce
<代码>最小值和最大值
类似。关键字参数变为位置参数
def _sum(a, axis=None, dtype=None, out=None, keepdims=False):
return um.add.reduce(a, axis, dtype, out, keepdims)
但看起来这些参数的顺序是错误的out
是第四个,但是当我尝试直接添加.减少时,我必须做第六个
>>>> x
array([[ 0., 1.],
[ 2., 3.],
[ 4., 5.]])
>>>> y=np.zeros((2,))
>>>> np.add.reduce(x, 0, float, False, False, y)
array([ 6., 9.])
# reduce(a, axis, dtype, ?, keepdims, out)
我顺便看到在micrompy
树中有一个commit
处理reduce
的错误参数顺序。这可能正在修复此错误
在常规numpy
中,sum
调用为:
um.add.reduce(a, axis=axis, dtype=dtype, out=out, keepdims=keepdims)
这很好用。显然有人试图通过最小化关键字参数来挤出一点性能
module/micrompy/ufuncs.py
将reduce
定义为:
reduce(self, space, w_obj, w_axis, keepdims=False, out=None, dtype=None,
cumulative=False)
你确定有一个
numpy
版本可以使用pypy
吗?我能找到的最后一篇关于它的pypy
博客文章是在4月份发布的,它似乎仍在进行中。
reduce(self, space, w_obj, w_axis, keepdims=False, out=None, dtype=None,
cumulative=False)