numpy 如何在一行中获取由字符串分隔的数组项?

6yjfywim  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(70)

我有这个数据

[[ 2.696000e+00  0.000000e+00  0.000000e+00  0.000000e+00]
 [ 2.577000e+00  0.000000e+00  0.000000e+00  0.000000e+00]
 [ 0.000000e+00 -2.560096e+03  0.000000e+00  0.000000e+00]
...

字符串
并希望为每行打印它

2.696000e+00 & 0.000000e+00 & 0.000000e+00 & 0.000000e+00 //
2.577000e+00 & 0.000000e+00 & 0.000000e+00 & 0.000000e+00 //
...


我所做的是

for k in range(1):
for i in range(len(data[k])):
    print(data[k][i],'&')
    if i == len(data[k])-1:
        print(data[k][i],'//')


哪些输出

2.696 &
0.0 &
0.0 &
0.0 &
0.0 //


如何消除行中每个条目之间的新行?

dluptydi

dluptydi1#

您可以使用str.join将数字连接到&,然后打印//作为最后一个字符串:

data = [
    [2.696000e00, 0.000000e00, 0.000000e00, 0.000000e00],
    [2.577000e00, 0.000000e00, 0.000000e00, 0.000000e00],
    [0.000000e00, -2.560096e03, 0.000000e00, 0.000000e00],
]

for row in data:
    print(' & '.join(map(str, row)), '//')

字符串
印刷品:

2.696 & 0.0 & 0.0 & 0.0 //
2.577 & 0.0 & 0.0 & 0.0 //
0.0 & -2560.096 & 0.0 & 0.0 //

l5tcr1uw

l5tcr1uw2#

只需使用连接函数

' & '.join(map(lambda s: '%E'%s, [2.696000e00, 0.000000e00, 0.000000e00, 0.000000e00]))

字符串
输出

'2.696000E+00 & 0.000000E+00 & 0.000000E+00 & 0.000000E+00'


使用上述方法,您只需执行一次循环,然后将数组转换为具有首选连接字符的字符串。
需要map函数将十进制值转换为字符串。lambda fn只是使用E表示法将十进制格式化为字符串。一个'str'Map会去掉0。详情请参见this
如果你只是想阻止打印输出换行符,check this
Edit1:使用Map示例更新代码

相关问题