Укладка numpy recarrays, не теряя их recarrayness

Кажется, что популярное решение не будет работать во всех контейнерах... http://www.theserverside.com/discussions/thread.tss?thread_id=30190

7
задан Vebjorn Ljosa 24 November 2009 в 17:54
поделиться

2 ответа

Я не знаю. Скорее всего, это ошибка / функция, которая никогда не была реализована. numpy.hstack по сути является оболочкой для функции в numpy.core.fromnumeric . Numeric - один из двух предшественников numpy. Большинство функций в numpy имеют соглашение о выводе того же типа, что и ввод, путем вызова метода __ array_wrap __ ввода на выходе, и результирующий вывод должен иметь те же данные, но "завернутый" в новый класс. Возможно, понятие «обертывание» не было в числовом формате и никогда не добавлялось к этой функции.

Вы можете использовать этот метод, чтобы сделать более умную функцию стекирования

def hstack2(arrays) :
  return arrays[0].__array_wrap__(numpy.hstack(arrays))

Это работает как для повторных массивов, так и для обычных массивов

>>> f = hstack2((a,b))
>>> type(f)
<class 'numpy.core.records.recarray'>
>>> f.foo
array([    140633760262784,     111050731618561,     140633760262800,
                   7536928, 8391166428122670177])
>>> x = numpy.random.rand(3)
>>> y = numpy.random.rand(2)
>>> z = hstack2((x,y))
>>> type(z)
<type 'numpy.ndarray'>

не уверен, что вы планируете,

8
ответ дан 6 December 2019 в 15:23
поделиться

Кстати, вы также можете использовать:

c = np.concatenate((a,b))

или

c = np.r_[a, b]

( Источник: это сообщение из списка рассылки )

-1
ответ дан 6 December 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: