如何映射具有特定间距和文本的数组字符串?
说我有
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中的每个元素之后。列表仅包含数字。
答案 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)
我已经使用制表符\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)