Applying a function along a numpy array

后端 未结 4 690
情话喂你
情话喂你 2021-02-07 05:00

I\'ve the following numpy ndarray.

[ -0.54761371  17.04850603   4.86054302]

I want to apply this function to all elements of the array

4条回答
  •  情歌与酒
    2021-02-07 05:42

    Just to clarify what apply_along_axis is doing, or not doing.

    def sigmoid(x):
      print(x)    # show the argument
      return 1 / (1 + math.exp(-x))
    
    In [313]: np.apply_along_axis(sigmoid, -1,np.array([ -0.54761371  ,17.04850603 ,4.86054302])) 
    [ -0.54761371  17.04850603   4.86054302]   # the whole array
    ...
    TypeError: only length-1 arrays can be converted to Python scalars
    

    The reason you get the error is that apply_along_axis passes a whole 1d array to your function. I.e. the axis. For your 1d array this is the same as

    sigmoid(np.array([ -0.54761371  ,17.04850603 ,4.86054302]))
    

    The apply_along_axis does nothing for you.

    As others noted,switching to np.exp allows sigmoid to work with the array (with or without the apply_along_axis wrapper).

提交回复
热议问题