2
У меня есть NumPy матрица вида:Перегородки группы в виде списка матриц в Python и NumPy
dummy = np.array([['A', 1, 1],
['A', 1, 1],
['B', 1, 1],
['C', 1, 1],
['F', 1, 1],
['I', 1, 1],
['I', 1, 1],
['I', 1, 1],
['J', 1, 1],
['K', 1, 1],
['L', 1, 1],
['M', 1, 1]])
То, что я пытаюсь произвести это список NumPy матриц, где может быть только п различные вариации значения строки в матрице, такой как:
Имея п = 4:
[array([['A', '1', '1'],
['A', '1', '1'],
['B', '1', '1'],
['C', '1', '1'],
['F', '1', '1']], <= 4 different groups (A,B,C,F)
dtype='|S1'),
array([['I', '1', '1'],
['I', '1', '1'],
['I', '1', '1'],
['J', '1', '1'],
['K', '1', '1'],
['L', '1', '1']], <= 4 different groups (I,J,K,L)
dtype='|S1'),
array([['M', '1', '1']], <= only one but kept
dtype='|S1')]
У меня есть следующая функция, которая почти работает ..
def partition_by(x, groups):
uniques = set([])
p = []
q = []
for i in x:
if len(uniques) < groups or i[0] in uniques:
uniques.add(i[0])
p.append(i.tolist())
q.append(np.array(p))
return q
partition_by(dummy, 4)
урожайности:
[array([['A', '1', '1'],
['A', '1', '1'],
['B', '1', '1'],
['C', '1', '1'],
['F', '1', '1']],
dtype='|S1')]
Thats удивительный .. спасибо сэр .. может ли функция быть адаптирована к тому, где строка не находится в индексе 0 .. например [[1, 'A', 1], [1, 'A', 1], [1, 'B', 1], ...]] здесь находится в индексе 1. Как передать индекс в качестве аргумента? – adebesin
@adebesin Отредактировано. Используйте параметр ввода 'colID':' colID = 1'. – Divakar