2009-11-10 4 views

ответ

6

Использование 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
for i in array1: 
    array2.append(i) 

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

array1.extend(array2) 

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

0
#!/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[:] 

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

+0

Есть ли причина, почему это не работает с recarrays? Я думал, что recarrays были только структурированными массивами с дополнительными аргументами __getattribute __/__ setattr__? – astrofrog

+0

Не знаю почему. Я знаю только, что, когда я пытаюсь сделать то же самое с рекурсиями, я получаю ValueError: не могу изменить размер этого массива: он не имеет собственных данных. В прошлом, сталкиваясь с такими проблемами, как рекуррентные, я предпочитаю использовать структурированные массивы вместо повторных вычислений. Синтаксический сахар не стоит проблем. – unutbu

Смежные вопросы