Предполагая, что ваши данные являются целыми числами (поскольку они представляют строки и столбцы), или вы можете иметь sh ваши данные x1, x2, ...
в 1, 2, ...
целых числах, вот быстрое решение:
#list of pairwise combinations in your data
comb_list = []
for each_list in data:
comb_list += list(combinations(each_list,2))
#convert combination int to index (numpy is 0 based indexing)
comb_list = np.array(comb_list) - 1
#make array with flat indices
flat = np.ravel_multi_index((comb_list[:,0],comb_list[:,1]),(row_size,col_size))
#count number of duplicates for each index using np.bincount
base_array = np.bincount(flat,None,row_size*col_size).reshape((row_size,col_size)).astype(np.uint8)
пример данные:
[[1, 2, 3, 4], [2, 1], [4, 5, 3, 4]]
Соответствующий вывод:
[[0 1 1 1 0]
[1 0 1 1 0]
[0 0 0 2 0]
[0 0 1 1 1]
[0 0 1 1 0]]
РЕДАКТИРОВАТЬ: соответствует объяснению в комментариях:
data=[[1, 2, 3, 4], [2, 1], [4, 5, 3, 4]]
base_array = np.zeros((len(data), np.max(np.amax(data))), dtype=np.uint8)
for i, each_list in enumerate(data):
for j in each_list:
base_array[i, j-1] = 1
Выход:
[[1 1 1 1 0]
[1 1 0 0 0]
[0 0 1 1 1]]