如何强制numpy数组顺序为fortran风格?

时间:2011-10-07 13:58:49

标签: python arrays performance numpy fortran

我正在使用相当多的fortran库来进行一些数学计算。所以numpy中的所有数组都需要 Fortran-contiguous 目前,我使用numpy.asfortranarray()完成此操作。

我的问题是:

  1. 这是一个快速告诉numpy数组应该以fortran风格存储还是更快的方式?
  2. 是否有可能设置一些numpy标志,以便创建的每个数组都是fortran风格?

2 个答案:

答案 0 :(得分:11)

生成numpy.array对象时,使用可选参数order ='F'(默认为'C')。这就是我这样做的方式,可能和你做的一样。关于数字2,我不知道设置默认顺序,但在生成数组时只包含order可选参数很容易。

答案 1 :(得分:5)

关于问题2:您可能会担心在执行数组转换和操作后保留Fortran排序。我有一个类似的字节序问题。我从文件中加载了一个big-endian原始数组,但是当我应用日志转换时,结果数组将是little-endian。我通过首先分配第二个big-endian数组,然后执行就地日志来解决这个问题:

b=np.zeros(a.shape,dtype=a.dtype)
np.log10(1+100*a,b)

在您的情况下,您将使用Fortran命令分配b