一個矩陣的列快速迭代法設A是一個矩陣在與ctypes的
import numpy as np
A = np.matrix([[3.0, 1.0, 2.0, 0.0], [2.0, 1.0, 3.0, 1.0], [0.0, 2.0, 0.0, 3.0]])
[[ 3. 1. 2. 0.]
[ 2. 1. 3. 1.]
[ 0. 2. 0. 3.]]
我面臨着一個複雜的庫(基於ctypes的接口),它以外我給指針的矩陣的列,例如:
import ctypes
for j in range(0,4):
a = np.copy(A[:,j])
lib.DoSomething(a.ctypes.data_as(ctypes.POINTER(ctypes.c_double)))
顯然我很想避免將列拷貝到變量a中。我想有很多聰明的想法?也許我應該轉置並複製矩陣?或者有沒有一種方法可以將它存儲爲基於列?
托馬斯
@ebarr是它可能,它只是沒有默認值。見Davidmh的回答。 – jorgeca
你在說什麼適用於修改步幅。如果你去了數組的文檔,「如果order是'C'(默認),那麼數組將會是C連續的順序(last-index會變化最快)。如果order是'F',那麼返回的數組將採用Fortran連續順序(首先指數變化最快)。「速度差異是由於數據的實際內存佈局造成的。 – Davidmh
@Davidmh道歉,你是現貨。我誤解了文檔,但只是做了一個快速測試,我發現它工作正常。我刪除了我原來的評論,以免人們誤入歧途。 – ebarr