Слияние разных размеров или столбцов строки с помощью Vstack Python - PullRequest
0 голосов
/ 12 мая 2018

Это продолжение предыдущего вопроса. Как использовать vstack для другого измерения или столбца из этого примера.

File : "new.dat"
WBGG 120200Z VRB03KT 030V170 9000 FEW015 BKN160 28/25 Q1013 NOSIG

File : "old.dat"
WBGG 120130Z VRB02KT 9000 FEW015 BKN150 27/25 Q1013 NOSIG    
WBGG 120100Z VRB02KT 9999 FEW014 BKN150 26/25 Q1012 NOSIG

Сценарий, используемый @Anton vBR, используется следующим образом, но работает только для аналогичного измерения.

a = np.loadtxt('old.dat', dtype='object')
b = np.loadtxt('new.dat', dtype='object')

c = np.vstack((b,a))

np.savetxt('old.dat', c, delimiter=" ", fmt="%s")

Ожидаемый результат:

WBGG 120200Z VRB03KT 030V170 9000 FEW015 BKN160 28/25 Q1013 NOSIG
WBGG 120130Z VRB02KT 9000 FEW015 BKN150 27/25 Q1013 NOSIG    
WBGG 120100Z VRB02KT 9999 FEW014 BKN150 26/25 Q1012 NOSIG

1 Ответ

0 голосов
/ 12 мая 2018

Сначала необходимо гомогенизировать ширину:

a = np.loadtxt('old.dat', dtype='object', ndmin=2)
b = np.loadtxt('new.dat', dtype='object', ndmin=2)

a_width = a.shape[1]
b_width = b.shape[1]
if a_width < b_width:
    a = np.append(a, np.zeros((len(a), b_width - a_width), 'S0'), axis=1) # 'U0' in Python 3
if b_width < a_width:
    b = np.append(b, np.zeros((len(b), a_width - b_width), 'S0'), axis=1)

Тогда это будет работать.

Обратите внимание, что я добавил ndmin=2 при загрузке файлов, потому что в противном случае файл из одной строкисоздает 1D массив вместо 2D.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...