У меня есть список двумерных массивов numput на Python (все с одинаковой формой), и я хочу извлечь индексы равных массивов. Я пришел с этим:Найти индексы равных numpy 2D строк
a = np.array([[1, 2], [3, 4]])
b = np.array([[1, 2], [3, 4]])
c = np.array([[3, 4], [1, 2]])
d = np.array([[3, 4], [1, 2]])
e = np.array([[3, 4], [1, 2]])
f = np.array([[1, 2], [3, 4]])
g = np.array([[9, 9], [3, 4]])
li = [a, b, c, d, e, f, g]
indexes = list(range(len(li)))
equals = []
for i, a_i in enumerate(indexes):
a_equals = []
for j, b_i in enumerate(indexes[i+1:]):
if np.array_equal(li[a_i], li[b_i]):
del indexes[j]
a_equals.append(b_i)
if a_equals:
equals.append((a_i, *a_equals))
print(equals)
# [(0, 1, 5), (2, 3, 4)]
Он работает (вы можете считать, что ни один из 2D массивов пустые), однако решение неуклюжее и, вероятно, медленно. Есть ли способ сделать это более элегантно с помощью Numpy?
всех тех 2D массивов одинаковых фигур? – Divakar
Да. Всегда такая же форма. – tsorn
Имеет ли порядок строк выходного материала, т. Е. Что, если мы получим '[(2, 3, 4) (0, 1, 5)]' вместо? – Divakar