解答例

最大値を返す関数の例は以下になります。

In [1]:
import numpy as np

def my_max(x):
    max=0
    for j in np.arange(len(x)):
        if x[j]>max:
            max=x[j]            
    return max
In [2]:
x=np.array([7,2,4,2,9,4,3,5,6,1])
In [3]:
my_max(x)
Out[3]:
9

上の関数だと、xの最大値がマイナスだとうまく機能しません。なぜなら最初にmaxとして0を代入しているからです。

この問題を回避するには、最初にmaxにx[0]を代入してしまうという手もあります。その場合はループさせる回数がlen(x)-1になります。こんな感じです。

In [4]:
def my_max2(x):
    max=x[0]
    for j in np.arange(len(x)-1):
        if x[j+1]>max:
            max=x[j+1]            
    return max
In [5]:
x=np.array([-2,-1,-10,-5,-6])
In [6]:
my_max(x)
Out[6]:
0
In [7]:
my_max2(x)
Out[7]:
-1

後者のmy_max2()が正しい値を返しています。