Próbuję wektoryzować następującą operację. Mam tablicę odległości x, y, z i muszę znaleźć różnice między każdym z nich.Tablica 2D Numpy Odejmowanie według wiersza
temp_result = np.array([[0.8, 0., 1.], [0., -0.6, 1.],[0.8, 0., 1.]])
Co zamierzam zrobić, to odejmij bez użycia do iteracji pętli.
temp_result[0] - temp_result[0]
temp_result[0] - temp_result[1]
temp_result[0] - temp_result[2]
temp_result[1] - temp_result[0]
temp_result[1] - temp_result[1]
temp_result[1] - temp_result[2]
temp_result[2] - temp_result[0]
temp_result[2] - temp_result[1]
temp_result[2] - temp_result[2]
dziękuję!
Oto bardziej zwięzła wersja: 'diffs = arr [:, None] - arr [None,:]'. Jest to przykład możliwości transmisji numpy (http://docs.scipy.org/doc/numpy/user/basics.broadcasting.html). –
Korzystam już z nadawania; to, co tam zrobiłeś, polegało na niejawnym użyciu 'newaxis' (co jest miłym rozwiązaniem). Dodam to do odpowiedzi, dzięki! – nneonneo
Przepraszam, nie chciałem sugerować, że nie korzystasz z nadawania! Oświadczenie to miało być ogólnym komentarzem do tej metody. –