>>>
>>>
>>>
>>> arr_data = [('a', 50, 4), ('c', 20, 1),
('a', 15, 5), ('e', 40, 4),
('a', 35, 2),('b', 100, 5),
('c', 80, 3), ('d', 100, 3), ('e', 60, 2)]
>>> dt =[('col_0', np.str, 5),
('col_1','<i4'),
('col_2','<i4')]
>>> a = np.array(arr_data, dtype=dt)
>>> a.reshape((-1,1))
array([[('a', 50, 4)],
[('c', 20, 1)],
[('a', 15, 5)],
[('e', 40, 4)],
[('a', 35, 2)],
[('b', 100, 5)],
[('c', 80, 3)],
[('d', 100, 3)],
[('e', 60, 2)]],
dtype=[('col_0', '<U5'),... ])
>>>
>>> uni_info = np.unique(a, True, True)
>>> vals, idx, inv = uni_info
>>>
>>>
Now for some output >>> vals.reshape((-1,1))
array([[('a', 15, 5)],
[('a', 35, 2)],
[('a', 50, 4)],
[('b', 100, 5)],
[('c', 20, 1)],
[('c', 80, 3)],
[('d', 100, 3)],
[('e', 40, 4)],
[('e', 60, 2)]],
dtype=[('col_0', ... ])
>>>
>>> uni = np.unique(vals['col_0'])
>>> subs = [ vals[vals['col_0']==i] for i in uni ]
>>>
>>> for sub in subs:
... n = len(sub['col_0'])
... t = sub['col_0'][0]
... val_max = np.max(sub['col_1'])
... val_min = np.min(sub['col_1'])
... frmt = "type {} -N: {} -max: {} -min: {}\n -sub {}"
... print(frmt.format(t, n, val_max, val_min, sub))
...
type a -N: 3 -max: 50 -min: 15
-sub [('a', 15, 5) ('a', 35, 2) ('a', 50, 4)]
type b -N: 1 -max: 100 -min: 100
-sub [('b', 100, 5)]
type c -N: 2 -max: 80 -min: 20
-sub [('c', 20, 1) ('c', 80, 3)]
type d -N: 1 -max: 100 -min: 100
-sub [('d', 100, 3)]
type e -N: 2 -max: 60 -min: 40
-sub [('e', 40, 4) ('e', 60, 2)]
>>>
|