Сращивать массивы в NumPy?

Я хотел бы выполнить сращивание сортов в NumPy. Допустим, у меня есть два массива, a а также b:

>>> a
array([[ 1, 10],
       [ 2, 20],
       [ 5, 30]])
>>> b
array([[ 1, 11],
       [ 3, 31],
       [ 4, 41]])

который я хочу соединить в следующий массив, c:

>>> c
array([[  1.,  10.],
       [  2.,  20.],
       [  3.,  nan],
       [  4.,  nan],
       [  5.,  30.]])

То есть я склеиваю значения из первого столбца b в a не заботясь о втором столбце.

Конечно, я мог бы реализовать это сам довольно легко, но было бы лучше, если бы NumPy сделал это вместо меня. Это возможно?

3 ответа

Решение

В ответе mishaF пропущен только последний шаг - сделать записи последнего столбца уникальными. Полный код, чтобы получить ваш c (за исключением dtype, который изменяется от int в float в вашем посте) есть

b[:,1]=numpy.nan
c = numpy.r_[a, b]
c.sort(0)
c = c[numpy.unique(c[:,0], True)[1]]

Я не думаю, что в NumPy есть что-то для этого. Вам нужен именно этот результат (по порядку, второй столбец с неопределенным значением)? Может быть, есть что-то близкое, что все равно будет полезно для конечной цели.

Вы можете сложить их вместе, а затем отсортировать. Однако это не учитывает тот факт, что у вас есть два вхождения индекса 1. Не уверен, что это большое улучшение...

 b[:,1]=np.nan
 c = np.vstack((a,b))
 c.sort(0)
Другие вопросы по тегам