2011-10-07 56 views
14

我使用了很多fortran庫來做一些數學計算。所以numpy中的所有數組都必須是Fortran連續的
目前我通過numpy.asfortranarray()完成此項工作。如何強制numpy數組的順序fortran風格?

我的問題是:

  1. 這是告訴numpy的,數組應存放在FORTRAN風格還是有一個更快的快速方法嗎?
  2. 是否有可能設置一些numpy標誌,以便每個創建的數組都是fortran風格的?

回答

11

生成numpy.array對象時,使用可選參數order ='F'(默認'C')。這是我做這件事的方式,可能和你做的事情是一樣的。關於數字2,我不知道設置默認順序,但是在生成數組時僅包含順序可選參數很容易。

5

關於問題2:您可能擔心在執行數組轉換和操作後保留Fortran排序。我有一個與endianness類似的問題。我從文件中加載了一個big-endian原始數組,但是當我應用一個對數轉換時,所得到的數組將是小端的。我解決此問題得到了通過第一分配第二大端陣列,然後進行就地日誌:

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

在你的情況,你會分配b與Fortran的順序。