2009-11-10 81 views
2

我有兩個Numpy記錄數組,它們具有完全相同的字段。將它們合併成一個的最簡單方法是什麼(即將一個表格添加到另一個表格)?組合兩個記錄陣列

回答

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) 

現在陣列1還包含數組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 2009-11-10 15:55:43

+0

我不知道爲什麼。我只知道當我用recarrays嘗試同樣的事情時,我得到一個ValueError:無法調整此數組的大小:它不擁有自己的數據。在過去遇到這樣的問題時,我傾向於使用結構化數組而不是重新編程。語法糖不值得麻煩。 – unutbu 2009-11-10 17:03:33