[英]Merging numpy array elements using join() in python
想要转换以下numpy数组a
a = [
array([['x', 'y', 'k'], ['d', '2', 'z'], ['a', '15', 'r']], dtype='|S2'),
array([['p', '49'], ['l', 'n']], dtype='|S2'),
array([['5', 'y'], ['33', 'u'], ['v', 'z']], dtype='|S2'),
array([['f', 'i'], ['c', 'm'], ['u', '98']] dtype='|S2')
]
输入b
b = x!y.d!2.a!15 * x!k.d!z.a!r , p!49.l!n , 5!y.33!u.v!z , f!i.c!m.u!98
像这样考虑每个子数组
#x #y #k
#d #2 #z
#a #15 #r
然后用'!'合并0和1列 并且每行都有'。' 然后合并0和2列。 等等。 这里使用'*'合并0,1和0,2列。','用于合并子数组
只需使用'!' '.' '*' ','
合并字符串 '!' '.' '*' ','
我尝试了以下代码。 虽然无法得到结果
temp = []
for c in a:
temp = a[0:]
b = " * ".join(".".join(var1+"!"+var2 for var1,var2 in zip(temp,a) for row in a)
print b
print " , "
我的理解,您的解决方案可能是这样的:
import numpy as np
a = [
np.array([['x', 'y', 'k'], ['d', '2', 'z'], ['a', '15', 'r']], dtype='|S2'),
np.array([['p', '49'], ['l', 'n']], dtype='|S2'),
np.array([['5', 'y'], ['33', 'u'], ['v', 'z']], dtype='|S2'),
np.array([['f', 'i'], ['c', 'm'], ['u', '98']], dtype='|S2')
]
aa = []
for k in a:
bb = []
for i in range(len(k[0]) - 1):
cc = []
for j in range(len(k)):
cc.append('!'.join([k[j][0], k[j][i + 1]]))
bb.append('.'.join(cc))
aa.append(' * '.join(bb))
b = ' , '.join(aa)
print b
如果是错的,请澄清您的算法。
In [144]: " , ".join(" * ".join(".".join(str(xx) + '!' + str(yy) for xx, yy in zip(x[:, 0], x[:, _x])) for _x in range(1, len(x[0]))) for x in a)
Out[144]: 'x!y.d!2.a!15 * x!k.d!z.a!r , p!49.l!n , 5!y.33!u.v!z , f!i.c!m.u!98'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.