如何将numpy数组顺序强制为fortran样式?

2024-06-02 21:58:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我用了相当多的fortran库来做一些数学计算。所以numpy中的所有数组都需要Fortran continuous
现在我用numpy.asfortranarray()来完成这个任务。

我的问题是:

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

Tags: 方法numpy风格标志数组continuous数学计算fortran
2条回答

关于问题2:在执行数组转换和操作之后,您可能会担心如何保留Fortran顺序。我对endianness也有类似的问题。我从文件中加载了一个大端的原始数组,但是当我应用一个日志转换时,得到的数组将是小端的。我通过先分配第二个大端数组,然后执行就地日志来解决问题:

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

在您的例子中,您将使用Fortran排序来分配b

生成numpy.array对象时,使用可选参数order=“F”(默认值“C”)。我就是这样做的,可能和你做的一样。关于数字2,我不知道如何设置默认顺序,但是在生成数组时只包含order可选参数就足够简单了。

相关问题 更多 >