numpy.fromfile python 2.7.3和2.7.6之间的差异

时间:2016-10-05 17:23:23

标签: python arrays numpy

我遇到了在两个控制台之间运行代码的问题,并且我已经将它归结为这些计算机上安装的python版本之间的差异(分别为2.7.3和2.7.6)。

这是在github(https://github.com/tkkanno/PhD_work/blob/master/1r)上找到的输入文件。

在python 2.7.3和numpy版本1.11.1中,以下代码按预期工作:

import numpy as np
s  = 'directory/to/file'
f = open(s, 'rb')
y = np.fromfile(f,'<l')
y.shape

这个给出一个numpy形状的阵列(16384,)。但是,当它在python 2.7.6 / numpy 1.11.1上运行时,它给出了一半大小的数组(8192,)。这对我来说是不可接受的

我无法理解为什么numpy用不同版本的python这样做。我会很感激任何建议

1 个答案:

答案 0 :(得分:0)

my comment转换:

您可能在不同的Python / OS版本上运行,并且对File positiveImgs = new File(".../" + className + ".zip"); ClassifierOptions options = new ClassifierOptions.Builder().addClass(className, positiveImgs).build(); VisualClassifier result; result = service.updateClassifier(classifierID, options).execute(); System.out.println(result); 的大小有不同的概念。 C不需要特定的long大小,实际上,Windows总是将其视为32位,而其他常见的桌面操作系统将其视为32位(如果操作系统和操作系统)。 Python是为32位CPU(ILP32)构建的,如果为64位CPU(LP64)构建,则为64位。

如果要在所有操作系统上使用固定宽度类型,请不要使用系统相关宽度类型。 Use fixed width types instead。根据您的注释,预期的行为是加载32位/ 4字节值。如果您只是使用本机字节序,则可以传递longnumpy.int32将原始numpy识别为数据类型)。由于您希望明确指定字节顺序(可能这可能在大端系统上运行),您可以通过class明确指出它是一个小端('<i4')有符号整数({{ 1}})四个字节大小(<):

i