[英]Fast conversion of c char numpy array to list of python strings
我正在使用 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 字符串列表?
基本上,避免對數組進行迭代。 這有點像在黑暗中拍攝,但請嘗試:
bs = c_str_arr.tobytes()
str_arr = [bs[i:i+str_len].decode() for i in range(0, str_len*arr_len, str_len)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.