簡體   English   中英

如何將矩陣轉換為字符串數組/列表?

[英]how do you convert a matrix to a array/list of strings?

如何將矩陣轉換為字符串數組/列表? 輸入:

from numpy import array
M =   array([[1,1,2,5],
             [1,1,2,3],
             [1,2,0,4],
             [1,2,0,6],
             [1,2,0,8],
             [2,1,3,5],
             [2,2,9,6],
             [2,2,9,4]])

輸出:

N =   array(["1,1,2,5",
             "1,1,2,3",
             "1,2,0,4",
             "1,2,0,6",
             "1,2,0,8",
             "2,1,3,5",
             "2,2,9,6",
             "2,2,9,4"])

我們已經嘗試過這樣的事情:

list1=[]
for i in range(len(M)):
    list1=list1.append(str(M[i,0]),str(M[i,1]),str(M[i,2]),str(M[i,3]))

在列表理解中做到這一點,使用str.join使用逗號將轉換后的整數連接到字符串:

from numpy import array

M =   array([[1,1,2,5],
             [1,1,2,3],
             [1,2,0,4],
             [1,2,0,6],
             [1,2,0,8],
             [2,1,3,5],
             [2,2,9,6],
             [2,2,9,4]])

N = [",".join([str(x) for x in m]) for m in M]

print(N)

結果:

['1,1,2,5', '1,1,2,3', '1,2,0,4', '1,2,0,6', '1,2,0,8', '2,1,3,5', '2,2,9,6', '2,2,9,4']

注意:要獲取一個numpy數組,只需使用array(N)轉換此list

只需這樣:

flat = [",".join([str(e) for e in row]) for row in M]

假設您的列表是一個numpy數組,則可以將np.apply_along_axis()lambda function例如以下示例:

M = array([[1, 1, 2, 5],
       [1, 1, 2, 3],
       [1, 2, 0, 4],
       [1, 2, 0, 6],
       [1, 2, 0, 8],
       [2, 1, 3, 5],
       [2, 2, 9, 6],
       [2, 2, 9, 4]])

N = np.apply_along_axis(lambda x: ','.join(map(str, x)), 1, M)

輸出:

>>> N
array(['1,1,2,5', '1,1,2,3', '1,2,0,4', '1,2,0,6', '1,2,0,8', '2,1,3,5',
       '2,2,9,6', '2,2,9,4'], 
      dtype='<U7')

假設您獲得了本地list對象,該對象與np.array沒有什么不同:

In [1]: M = [[1,1,2,5], [1,1,2,3], [1,2,0,4], [1,2,0,6], [1,2,0,8], [2,1,3,5], [
   ...: 2,2,9,6],[2,2,9,4]]

In [2]: map(lambda x: ','.join(map(str, x)), M)
Out[2]: <map at 0x1049fca58>

In [3]: list(_)
Out[3]:
['1,1,2,5',
 '1,1,2,3',
 '1,2,0,4',
 '1,2,0,6',
 '1,2,0,8',
 '2,1,3,5',
 '2,2,9,6',
 '2,2,9,4']

這樣做是轉換str對象中每個元素的每個整數,並將其與','

您可以嘗試以下方法:

l = [[1,1,2,5],
     [1,1,2,3],
     [1,2,0,4],
     [1,2,0,6],
     [1,2,0,8],
     [2,1,3,5],
     [2,2,9,6],
     [2,2,9,4]]

new = [','.join(map(str, i)) for i in l]

輸出:

['1,1,2,5', '1,1,2,3', '1,2,0,4', '1,2,0,6', '1,2,0,8', '2,1,3,5', '2,2,9,6', '2,2,9,4']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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