Вопрос

Я хотел бы выполнить своего рода сплайс в 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 сделал это для меня для меня. Это возможно?

Это было полезно?

Решение

Ответ Мишафа пропускает только последний шаг - делая записи последнего столбца уникальными. Полный код, чтобы получить ваш 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. Не уверен, что это большое улучшение ...

 b[:,1]=np.nan
 c = np.vstack((a,b))
 c.sort(0)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top