Я играл вокруг с NumPy и я написал простую функциюЧто на самом деле происходит, когда вещание массив NumPy
> def euclid_dist(x, y):
... return sqrt((x-y).transpose().dot(x-y))
Но теперь, когда я пытаюсь
> x = arange(1,4).reshape(3,1)
> y = array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]]).transpose()
> z = euclid_dist(x, y)
> z
array([[ 0. , 0. , 0. , 0. ],
[ 0. , 5.19615242, 7.34846923, 9. ],
[ 0. , 7.34846923, 10.39230485, 12.72792206],
[ 0. , 9. , 12.72792206, 15.58845727]])
Ok ... Так, цифры по диагонали - то, что я хотел, но как насчет остальных? Что сейчас произошло?
Насколько я понимаю, x
транслируется, так что это будет "что-то вроде
array([[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3]])
Но что происходит после этого? Это явно не элементная работа. Но если бы это применило функцию к каждой паре столбцов x и y, то не все ли строки (или столбцы) из z
были бы равны (поскольку все столбцы «вещания x
» равны)?
Очевидно, что я не понимаю, и я по достоинству оценю любое разъяснение.
Читайте о том, как это работает, используя форму и шаги здесь. Http://scipy-lectures.github.io/advanced/advanced_numpy/index.html#life-of-ndarray – YXD
Извините @senderle, один измените слишком далеко;) исправлено это – warran
Прошу прощения снова @senderle, я слишком долго работал ... – warran