Отображение массивов в красивый текст - PullRequest
0 голосов
/ 23 июня 2019

Как отобразить строки массива с определенным интервалом и текстом?

Скажи, что есть,

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 ]

1 голос
/ 23 июня 2019

Если вы имеете дело с 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
0 голосов
/ 23 июня 2019

Если вы хотите использовать операции над этим дальше, а не просто распечатывать, лучше использовать 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)
0 голосов
/ 23 июня 2019

Сделав это, вы получите запрошенный вывод. 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')
0 голосов
/ 23 июня 2019

format() дает вам целый мини-язык для размещения строк. Вот простой пример использования для столбцов с фиксированным значением:

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
0 голосов
/ 23 июня 2019

Вы можете просто выполнить итерацию по двум спискам одновременно, используя zip , и распечатать элементы.

Я использовал вкладки \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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...