![](/img/trans.png)
[英]How do you convert a list of strings to separate strings in Python 3?
[英]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.