Индексы пересекающихся строк массива Numpy 2d

-6

Я хочу получить индексы пересекающихся строк основного numpy 2d массива A, с другим B.

A = array([[1,2],
[1,3],
[2,3],
[2,4],
[2,5],
[3,4]
[4,5]])

B = array([[1,2],
[3,2],
[2,4]])

result=[0, -2, 3]
##Note that the intercept 3,2 must assign (-) because it is the opposite

Где это должно возвращать [0, -2, 3] на основе индексов массива A.

Спасибо!

спросил(а) 2017-07-25T05:36:00+03:00 3 года, 3 месяца назад
0
70

Пакет numpy_indexed (отказ от ответственности: я его автор) имеет функциональные возможности для эффективного решения таких проблем.

import numpy_indexed as npi
A = np.sort(A, axis=1)
B = np.sort(B, axis=1)
result = npi.indices(A, B)
result *= (A[:, 0] == B[:, 0]) * 2 - 1

ответил(а) 2017-07-25T10:02:00+03:00 3 года, 3 месяца назад
42

Вы можете ссылаться на код.

import numpy as np
A = np.array([[1,2],
[1,3],
[2,3],
[2,4],
[2,5],
[3,4],
[4,5]])

B = np.array([[1,2],
[3,2],
[2,4]])

result=[]

for i in range(0, len(A)):
for j in range(0, len(B)):
if A[i].tolist() == B[j].tolist():
result.append(i)
if A[i].tolist()[::-1] == B[j].tolist():
result.append(-i)
print(result)

Выход:

[0, -2, 3]

ответил(а) 2017-07-25T06:40:00+03:00 3 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема