-3

このループがifを無視する理由を誰かに教えてもらえますか?(編集:これはコード全体です-数値を返す関数です。)

time_now = time()
number = np.loadtxt("11.txt", unpack=True, dtype='int64')
lenx = len(number[0,:])
leny = len(number[:,0])
lennum = 4
#prods = np.zeros(lenx*leny*4).reshape(lenx,leny,4)
maxnum = 0

for m in range(0,leny):
    for n in range(0,lenx):
        prods = lookaround(n,m)

        if prods > maxnum:
            maxnum = prods

time_end = time();

elapsed = time_end - time_now

print(prods, elapsed)
4

2 に答える 2

2

たぶん、prodsは常に より小さいか等しいからmaxnumですか? 初期化に使用した値は何maxnumですか?ループの前に非常に小さい数に設定する必要がありますmaxnum = float("-inf")。もう 1 つの可能性はlookaround、正しくない値を返していることです。その関数の単体テストを行ってください。

于 2013-03-20T22:56:39.890 に答える
0

次のように書くだけです:

from itertools import product

time_now = time()

number = np.loadtxt("11.txt", unpack=True, dtype='int64')
lenx = len(number[0,:])
leny = len(number[:,0])

maxnum = max(lookaround(n, m) for n, m in product(range(lenx), range(leny)))

time_end = time();    
elapsed = time_end - time_now

print(maxnum, elapsed)   # <== maxnum not prods
于 2013-03-20T23:09:10.917 に答える