Сращивать массивы в NumPy? - PullRequest
0 голосов
/ 22 декабря 2010

Я бы хотел выполнить сращивание сортов в 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 ]

1 голос
/ 23 декабря 2010

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

 b[:,1]=np.nan
 c = np.vstack((a,b))
 c.sort(0)
1 голос
/ 24 декабря 2010

В ответе 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]]
1 голос
/ 22 декабря 2010

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

...