Как объединить матрицу (или список списков) с пробелами и буквами в строку?

В случае, если вы ищете способ изменить размер фигуры в Pandas, вы можете сделать, например ::

df['some_column'].plot(figsize=(10, 5))

, где df - это кадр данных Pandas. Если вы хотите изменить настройки по умолчанию, вы можете сделать следующее:

import matplotlib

matplotlib.rc('figure', figsize=(10, 5))
0
задан Wai Ha Lee 2 March 2019 в 09:38
поделиться

3 ответа

Как-то так?

array =['  HHHHHHH HHHHHHHHHHH       HHHHHHHHHHHHHHHHHHH    ',
        ' E       E               EEE                       ',
        '                     TT                            ',
        '                       CC                      CCCC']
result = []
for pos in zip(*array):                   # create tuples of chars from the same index in all strings
    char = ''.join(pos).replace(' ', '')  # remove all space chars
    if char:                              # if there's anything left (ie. skip the char at index 0)
        result.append(char[-1])           # then append the char from the array closest to the bottom
result = ''.join(result)                  # convert back to string
print result

, который печатает

EHHHHHHHEHHHHHHHHHHHTTCCEEEHHHHHHHHHHHHHHHHHHHCCCC
0
ответ дан Tomothy32 2 March 2019 в 09:38
поделиться

Вот простое решение:

>>> x
array(['  HHHHHHH HHHHHHHHHHH       HHHHHHHHHHHHHHHHHHH    ',
       ' E       E               EEE                       ',
       '                     TT                            ',
       '                       CC                      CCCC'],
      dtype='<U51')
>>> x.view('u4').reshape(len(x), -1).max(0).view(x.dtype).item(0).strip()
'EHHHHHHHEHHHHHHHHHHHTTCCEEEHHHHHHHHHHHHHHHHHHHCCCC'

Время:

f_pp  5.941 us
f_tb 27.473 us
f_ji 21.265 us

Код для получения времени:

import numpy as np
from timeit import timeit

x = np.array(['  HHHHHHH HHHHHHHHHHH       HHHHHHHHHHHHHHHHHHH    ',
              ' E       E               EEE                       ',
              '                     TT                            ',
              '                       CC                      CCCC'])

def f_pp():
    return x.view('u4').reshape(len(x), -1).max(0).view(x.dtype).item(0).strip()

def f_tb():         
    result = []
    for pos in zip(*x):                       # create tuples of chars from the same index in all string
        char = ''.join(pos).replace(' ', '')  # remove all space chars
        if char:                              # if there's anything left (ie. skip the char at index 0)
            result.append(char[-1])           # then append the char from the array closest to the bottom
    return ''.join(result)                    # convert back to string

def f_ji():
    return ''.join(max(y) for y in zip(*x)).strip()

for f in (f_pp, f_tb, f_ji):
    print(f.__name__, f'{timeit(f, number=1000) * 1000:>6.3f} us')
0
ответ дан Paul Panzer 2 March 2019 в 09:38
поделиться

Быстрый способ - использовать zip для обработки символ за символом и просто взять максимум в каждой позиции;

arr = ['  HHHHHHH HHHHHHHHHHH       HHHHHHHHHHHHHHHHHHH    ',
       ' E       E               EEE                       ',
       '                     TT                            ',
       '                       CC                      CCCC']

''.join(max(x) for x in zip(*arr))

' EHHHHHHHEHHHHHHHHHHHTTCCEEEHHHHHHHHHHHHHHHHHHHCCCC'
0
ответ дан Joachim Isaksson 2 March 2019 в 09:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: