我正在使用 Cython 在 Python 和 Fortran 代碼之間建立介面。其中一部分是檢索字串陣列。在 Fortran 中,
character(len=3) :: str_array(:)
為了這個例子,假設str_array包含以下內容
allocate(str_array(2))
str_array = ['abc','def']
我的方法是將其作為單個 C 字符陣列回傳給 Cython。我最終得到了一個 numpy 位元組字串陣列:
c_str_arr = np.array([b'a', b'b', b'c', b'd', b'e', b'f'], dtype='|S1')
然后,我使用以下 python 代碼將此 numpy 陣列轉換為 python 字串串列:
str_len = 3
arr_len = 2
c_str_arr.shape = (arr_len,str_len)
str_arr = []
for i in range(arr_len):
str_arr.append(b''.join(c_str_arr[i]).decode())
但這很慢。
我的問題:有沒有更快的方法來轉換c_str_arr為 python 字串串列?
uj5u.com熱心網友回復:
基本上,避免對陣列進行迭代。這有點像在黑暗中拍攝,但請嘗試:
bs = c_str_arr.tobytes()
str_arr = [bs[i:i str_len].decode() for i in range(0, str_len*arr_len, str_len)]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/334222.html
標籤:Python 麻木 赛通 numpy-ndarray
下一篇:無法將值寫入特定單元格
