Сращивать массивы в 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)