兼容性numpy 1.7 vs numpy 1.8

时间:2014-11-26 09:18:40

标签: python numpy

你好numpy 1.7和1.8有兼容性问题吗? 我使用python 2.7和numpy 1.7创建的npy出错了。现在我使用python 3.4和numpy 1.8

Traceback (most recent call last):
  File "C:\Python34\lib\site-packages\numpy\lib\format.py", line 334, in read_array_header_1_0
    d = safe_eval(header)
  File "C:\Python34\lib\site-packages\numpy\lib\utils.py", line 1128, in safe_eval
    ast = compiler.parse(source, mode="eval")
  File "C:\Python34\lib\ast.py", line 35, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
  File "<unknown>", line 1
    {'descr': '<f8', 'fortran_order': False, 'shape': (51L,), }
                                                         ^
SyntaxError: invalid syntax

1 个答案:

答案 0 :(得分:2)

问题在于形状键的值。在python 3中,您无法在声明后添加L.

martin@martin-desktop:~$ python3
Python 3.4.2 (default, Oct  8 2014, 13:08:17) 
[GCC 4.9.1] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 3
3
>>> 3L
  File "<stdin>", line 1
    3L
     ^
SyntaxError: invalid syntax
>>> 

PEP 237,最初于2001年起草,介绍了努力消除intlong整数之间的区别。这项工作以跨越Python 2.2到2.4的三阶段方法完成。 Python 3.0通过正式删除 long()类型和long文字(例如123456789L)添加了最后一步。

在您使用 long()的地方, int()是替代品,它会将值存储在正确的内部表示中。

在您使用L后缀生成long文字的地方,必须删除L,否则会引发 SyntaxError

http://docs.pythonsprints.com/python3_porting/py-porting.html#long-integers