【问题标题】:How to force numpy array order to fortran style?如何强制numpy数组顺序为fortran风格?
【发布时间】:2011-12-03 01:12:38
【问题描述】:
我正在使用相当多的 fortran 库来进行一些数学计算。所以numpy中的所有数组都需要Fortran-contiguous。
目前我使用numpy.asfortranarray() 完成此操作。
我的问题是:
- 这是告诉 numpy 数组应该以 fortran 样式存储的快速方法还是有更快的方法?
- 是否可以设置一些 numpy 标志,以便创建的每个数组都是 fortran 样式?
【问题讨论】:
标签:
python
arrays
performance
numpy
fortran
【解决方案1】:
在生成 numpy.array 对象时,使用可选参数 order='F'(默认为 'C')。我就是这样做的,可能和你做的一样。关于数字 2,我不知道设置默认顺序,但是在生成数组时只需包含顺序可选参数就很容易了。
【解决方案2】:
关于问题 2:您可能会担心在执行数组转换和操作后保留 Fortran 顺序。我对字节顺序也有类似的问题。我从文件中加载了一个大端原始数组,但是当我应用对数转换时,结果数组将是小端。我通过首先分配第二个大端数组,然后执行就地日志来解决这个问题:
b=np.zeros(a.shape,dtype=a.dtype)
np.log10(1+100*a,b)
在您的情况下,您将使用 Fortran 排序分配 b。