Учитывая следующую матрицу:
import numpy as np
mymatrix = mymatrix = np.matrix('-1 0 1; -2 0 2; -4 0 4')
matrix([[-1, 0, 1],
[-2, 0, 2],
[-4, 0, 4]])
и следующая функция (сигмоидальная/логистическая):
import math
def myfunc(z):
return 1/(1+math.exp(-z))
Я хочу получить новый массив/матрицу numpy, где каждый элемент является результатом применения функции myfunc
к соответствующему элементу исходной матрицы.
map(myfunc, mymatrix)
терпит неудачу, потому что она пытается применить myfunc к строкам не к каждому элементу. Я попытался использовать numpy.apply_along_axis
и numpy.apply_over_axis
но они также предназначены для применения функции к строкам или столбцам, а не по элементам.
Итак, как можно применить myfunc(z)
к каждому элементу myarray
чтобы получить:
matrix([[ 0.26894142, 0.5 , 0.73105858],
[ 0.11920292, 0.5 , 0.88079708],
[ 0.01798621, 0.5 , 0.98201379]])