Как сложить 2 пустых массива с разными длинами в Python - PullRequest
0 голосов
/ 09 июля 2019

Я создал несколько случайных массивов numpay:

import numpy as np

x1 = np.random.normal( 0, 1, ( 10, 1 ) )
x2 = np.random.normal( 0, 2, ( 5, 1 ) )
x3 = np.random.normal( 0, 3, ( 7, 1 ) )
x4 = np.random.normal( 0, 4, ( 9, 1 ) )

Как вы можете видеть, они имеют разную длину, теперь я хочу объединить их, чтобы потом сохранить их в файле Excel или CSV для дальнейшего использования.

Я перепробовал все фалловенские скрпеты:

#x = np.column_stack( ( x1 , x2 ))
 ------------
x =  np.concatenate((x1, x2[:,None]), axis=1)

но не сработало и это понятно, потому что каждый из них имеет разный размер x1 (10,1) - x2 (5,1)

Я не уверен, есть ли способ объединить их без каких-либо проблем, например, заполнить пропущенные None только для того, чтобы сделать их равными, или какие-нибудь идеи, которые могут помочь?

1 Ответ

1 голос
/ 09 июля 2019

заполнение np.nan является допустимой опцией.

создайте пустой целевой массив и просто назначьте ваши массивы в его субиндексы:

import numpy as np

x1 = np.random.normal( 0, 1, ( 10, 1 ) )
x2 = np.random.normal( 0, 2, ( 5, 1 ) )
x3 = np.random.normal( 0, 3, ( 7, 1 ) )
x4 = np.random.normal( 0, 4, ( 9, 1 ) )

arrs = [x1,x2,x3,x4]

a = np.empty((max(x.shape[0] for x in arrs), len(arrs)))
a[:] = np.nan

for i, x in enumerate(arrs):
    a[0:len(x), i] = x.T
print(a)

Выход:

[[ -1.5521545   -1.82217348  -3.28589422  -1.59646125]
 [  0.54409311   2.53585401  -2.15704799   2.1590175 ]
 [  0.24202617  -1.62680388   0.58507172   4.24671516]
 [  1.21341942  -2.09405961   1.94415747  -1.21781288]
 [ -0.53110862   1.47037056   2.37113853 -10.01200676]
 [  0.50884432          nan  -2.56881482  -3.52164926]
 [ -0.37551321          nan   0.67952001  -0.5523079 ]
 [  0.5943706           nan          nan  -6.25704491]
 [ -0.37893229          nan          nan  -6.28029336]
 [ -0.34746679          nan          nan          nan]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...