Объединение двух массивов записей - PullRequest
2 голосов
/ 10 ноября 2009

У меня есть два массива записей Numpy, которые имеют абсолютно одинаковые поля. Какой самый простой способ объединить их в одну (т.е. добавить одну таблицу в другую)?

Ответы [ 3 ]

6 голосов
/ 10 ноября 2009

Использование numpy.hstack():

>>> import numpy
>>> desc = {'names': ('gender','age','weight'), 'formats': ('S1', 'f4', 'f4')} 
>>> a = numpy.array([('M',64.0,75.0),('F',25.0,60.0)], dtype=desc)
>>> numpy.hstack((a,a))
array([('M', 64.0, 75.0), ('F', 25.0, 60.0), ('M', 64.0, 75.0),
       ('F', 25.0, 60.0)], 
      dtype=[('gender', '|S1'), ('age', '<f4'), ('weight', '<f4')])
0 голосов
/ 10 ноября 2009
#!/usr/bin/env python
import numpy as np
desc = {'names': ('gender','age','weight'), 'formats': ('S1', 'f4', 'f4')} 
a = np.array([('M',64.0,75.0),('F',25.0,60.0)], dtype=desc)
b = np.array([('M',64.0,75.0),('F',25.0,60.0)], dtype=desc)
alen=a.shape[0]
blen=b.shape[0]
a.resize(alen+blen)
a[alen:]=b[:]

Это работает со структурированными массивами, но не с массивами. Возможно, это хорошая причина придерживаться структурированных массивов.

0 голосов
/ 10 ноября 2009
for i in array1:
    array2.append(i)

Или (если реализовано)

array1.extend(array2)

Теперь array1 содержит также все элементы array2

...