2011-10-15 30 views

Trả lời

12

Nếu bạn chỉ muốn sử dụng gọn gàng, bạn có thể sử dụng mảng có cấu trúc và chức năng lib.recfunctions.join_by (xem http://pyopengl.sourceforge.net/pydoc/numpy.lib.recfunctions.html). Một ví dụ nhỏ:

In [1]: import numpy as np 
    ...: import numpy.lib.recfunctions as rfn 
    ...: a = np.array([(1, 10.), (2, 20.), (3, 30.)], dtype=[('id', int), ('A', float)]) 
    ...: b = np.array([(2, 200.), (3, 300.), (4, 400.)], dtype=[('id', int), ('B', float)]) 

In [2]: rfn.join_by('id', a, b, jointype='inner', usemask=False) 
Out[2]: 
array([(2, 20.0, 200.0), (3, 30.0, 300.0)], 
     dtype=[('id', '<i4'), ('A', '<f8'), ('B', '<f8')]) 

Một lựa chọn khác là sử dụng gấu trúc (documentation). Tôi không có kinh nghiệm với nó, nhưng nó cung cấp cấu trúc dữ liệu mạnh mẽ hơn và chức năng hơn tiêu chuẩn gọn gàng, "để làm việc với dữ liệu" quan hệ "hoặc" có nhãn "cả dễ dàng và trực quan". Và nó chắc chắn có chức năng nối và hợp nhất (ví dụ: xem http://pandas.sourceforge.net/merging.html#joining-on-a-key).

+0

Ah, quên về 'recfunctions'. Tôi hiện đang đánh giá gấu trúc ... rất nhiều sự lựa chọn ... Cảm ơn. – hatmatrix

Các vấn đề liên quan