将数组映射为美观的文本

时间:2019-06-23 16:13:07

标签: python arrays string mapping

如何映射具有特定间距和文本的数组字符串?

说我有

a = np.array([2, 4, 6, 8])
b = np.array([100, 400, 600, 800])

打印时所需的输出:

Position    Magnitude
2 m         100 kg
4 m         400 kg     
6 m         600 kg    
8 m         800 kg

我已经尝试过类似的操作,但是没有显示我想要的内容

print("\n "+ ' '.join(map(str, a)))  

因此可以看出,我希望单位“ m”和“ kg”紧接在列表a和b中的每个元素之后。列表仅包含数字。

5 个答案:

答案 0 :(得分:1)

如果要处理pandas(输出中没有# ...):

import numpy as np
import pandas as pd

a = np.array([2, 4, 6, 8])
b = np.array([100, 400, 600, 800])


df = pd.DataFrame({"Position": [str(pos) + " m" for pos in a],
                    "Magnitude": [str(mag) + " kg" for mag in b]})


print(df.to_string(index=False))
# Position Magnitude
#      2 m    100 kg
#      4 m    400 kg
#      6 m    600 kg
#      8 m    800 kg

答案 1 :(得分:0)

您可以使用enter image description here同时遍历两个列表并打印元素。

我已经使用制表符\t来创建必要的间距,但是可以同时使用空格和制表符的组合以及其他格式化参数来改善格式

print('Position\tMagnitude')

#Iterate over the arrays simultaneously
for pos, mag in zip(a,b):

    #Print the elements
    print(f'{pos} m\t\t\t{mag} kg')

输出将为

Position    Magnitude
2 m         100 kg
4 m         400 kg
6 m         600 kg
8 m         800 kg

答案 2 :(得分:0)

这样做,您将获得请求的输出。 zip只需同时迭代两个循环。在这种情况下,a1遍历一个向量,而b1遍历b个向量。

a = np.array([2, 4, 6, 8])
b = np.array([100, 400, 600, 800])
print('Position\t Magnitude')
for a1, b1 in zip(a,b):
    print(a1,'m\t\t',b1,'kg')

答案 3 :(得分:0)

format()为整个行提供了mini-language的布局。这是固定列的一个简单用例:

a = np.array([2, 4, 6, 8])
b = np.array([100, 400, 600, 800])

print('{} {:>14}'.format('Position','Magnitude'))
for m, kg in zip(a,b):
    print('{} m{:>14} kg'.format(m, kg))

打印

Position      Magnitude
2 m           100 kg
4 m           400 kg
6 m           600 kg
8 m           800 kg

答案 4 :(得分:0)

如果您想进一步使用操作而不只是打印,最好使用pandas模块:

import pandas as pd

df = pd.DataFrame(list(zip(a, b)), colums=['Position', 'Magnitude'])

df['Position'] = df['Position'].astype(str) + ' m'
df['Magnitude'] = df['Magnitude'].astype(str) + ' kg'

print(df)