簡體   English   中英

將 c char numpy 數組快速轉換為 python 字符串列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM