【问题标题】:How to force numpy array order to fortran style?如何强制numpy数组顺序为fortran风格?
【发布时间】:2011-12-03 01:12:38
【问题描述】:

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

我的问题是:

  1. 这是告诉 numpy 数组应该以 fortran 样式存储的快速方法还是有更快的方法?
  2. 是否可以设置一些 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

      【讨论】:

        猜你喜欢
        • 2017-10-28
        • 2015-03-18
        • 1970-01-01
        • 2021-03-10
        • 1970-01-01
        • 2013-07-21
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        相关资源
        最近更新 更多