我遇到了在两个控制台之间运行代码的问题,并且我已经将它归结为这些计算机上安装的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这样做。我会很感激任何建议
答案 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字节值。如果您只是使用本机字节序,则可以传递long
(numpy.int32
将原始numpy
识别为数据类型)。由于您希望明确指定字节顺序(可能这可能在大端系统上运行),您可以通过class
明确指出它是一个小端('<i4'
)有符号整数({{ 1}})四个字节大小(<
):
i